SlideShare a Scribd company logo
1 of 79
Railsエンジニアのためのウェブセキュリティ入門
EGセキュアソリューションズ株式会社
代表取締役 徳丸 浩
アジェンダ
• 3分間クッキングデモ
• OSコマンドインジェクション
• クロスサイトリクエストフォージェリ(CSRF)
• クロスサイトスクリプティング(XSS)
• SQLインジェクション
• パスワードの保護
• プラットフォームの脆弱性対応
• 参考文献
Copyright © 2017-2019 Hiroshi Tokumaru 2
徳丸浩の自己紹介
• 経歴
– 1985年 京セラ株式会社入社
– 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍
– 2008年 KCCS退職、HASHコンサルティング株式会社(現社名:EGセキュアソリューションズ株式会社)設立
• 経験したこと
– 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当
– その後、企業向けパッケージソフトの企画・開発・事業化を担当
– 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当
Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始
– 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ
• 現在
– EGセキュアソリューションズ株式会社 代表 https://www.eg-secure.co.jp/
– 独立行政法人情報処理推進機構 非常勤研究員 https://www.ipa.go.jp/security/
– 著書「体系的に学ぶ 安全なWebアプリケーションの作り方」(2011年3月)
同 第2版が 2018年6月21日発売
「徳丸浩のWebセキュリティ教室 」(2015年10月)
– 技術士(情報工学部門)
Copyright © 2017-2019 Hiroshi Tokumaru 3
基本的なこと
• Ruby on Railsは基本的な脆弱性(SQLインジェクション、XSS、CSRF
等)はデフォルトで対応している
• Ruby on Railsでアプリケーションを開発していて脆弱性になるパター
ンは以下の通り
– Ruby on Railsが対応していない脆弱性
• 実装レベルもの…Railsが対応できない例外的なもの
• 設計に依存するものや、脆弱な仕様…これはRailsと言えども救いようがない
– Ruby on Railsのルールに従わずに書いた場合
Copyright © 2017-2019 Hiroshi Tokumaru 4
3分間クッキングデモ
• 極小のブックマークアプリを作ります
$ rails new bookmark_app
$ cd bookmark_app
$ rails generate scaffold bookmark site:string url:string
$ rails db:migrate
• Viewを修正して、リンク表示になるよう link_to メソッドを使う
Copyright © 2017-2019 Hiroshi Tokumaru 5
作ったアプリを脆弱性診断してみましょう!
Copyright © 2017-2019 Hiroshi Tokumaru 6
クロスサイトスクリプティング検査をしてみる
Copyright © 2017-2019 Hiroshi Tokumaru 7
<a href="http://&quot;&gt;&lt;script&gt;alert(1)&lt;/script&gt;">
&quot;&gt;&lt;script&gt;alert(1)&lt;/script&gt;</a>
よさそうじゃないですか!
Copyright © 2017-2019 Hiroshi Tokumaru 8
でも、抜けがあります
Copyright © 2017-2019 Hiroshi Tokumaru 9
JavaScriptスキームによるXSSは可能
Copyright © 2017-2019 Hiroshi Tokumaru 10
<a href="javascript:alert(1)">xss</a>
バリデーションで対処してみましょう
Copyright © 2017-2019 Hiroshi Tokumaru 11
バリデーションをコントローラに追加
Copyright © 2017-2019 Hiroshi Tokumaru 12
バリデーションでXSSを防ぐ
Copyright © 2017-2019 Hiroshi Tokumaru 13
よさそうじゃないですか!
Copyright © 2017-2019 Hiroshi Tokumaru 14
でもだめです
Copyright © 2017-2019 Hiroshi Tokumaru 15
バリデーションを突破するパターン
Copyright © 2017-2019 Hiroshi Tokumaru 16
javascript:alert(1)/* 【改行】
http://example.jp/*/
なぜ駄目なのか?
Copyright © 2017-2019 Hiroshi Tokumaru 17
正規表現の ^ $ は「行の先頭末尾」を示す
• Rubyに限らず、正規表現の ^ と $ は「行の」先頭と末尾
• でも、PHPやPerlでは問題になりにくい
– PHPやPerlの場合、データ内の改行を無視して「一行のデータ」として扱う
– Rubyの場合、データ内の改行が有効化して、複数行のデータとして扱う
• その結果、以下のようになる
javascript:alert(1)/*
http://example.jp/*/ ← こちらが、 /^http:/// にマッチ
Copyright © 2017-2019 Hiroshi Tokumaru 18
行の先頭
でも、そもそもコントローラに独自バリデー
タを実装するのはよくないよね
Copyright © 2017-2019 Hiroshi Tokumaru 19
Railsの機能でモデルにバリデータを書こう
Copyright © 2017-2019 Hiroshi Tokumaru 20
モデルにバリデータを記述
Copyright © 2017-2019 Hiroshi Tokumaru 21
以下のエラーが表示される
Copyright © 2017-2019 Hiroshi Tokumaru 22
この正規表現は複数行のアンカー(^または$)を使用
しているため、セキュリティ上のリスクが生じる可能性
がある。
 Aと zを使うつもりだったか、または
:multiline => trueオプションを追加するのを忘れた
か?
エラーメッセージに従い、^ を A に修正し
ましょう
Copyright © 2017-2019 Hiroshi Tokumaru 23
今度は大丈夫
Copyright © 2017-2019 Hiroshi Tokumaru 24
ここまでのまとめ
• マイクロブックマークアプリを作った
• Ruby on Railsの機能により、SQLインジェクション対策やHTMLエス
ケープ処理はなされていた
• Javascriptスキームを用いたXSSは対策されていなかった
• 正規表現によるバリデーションを追加したが、行頭一致の ^ を使った
ために脆弱性が残った
• Ruby on Railsのバリデータで ^ $ を使うとエラーになる
• ^ の代わりに A を使うと、脆弱性は解消された
• 教訓: 自己流でやらずにRailsの流儀に(レールに乗る)従う方が安全
性が高い
Copyright © 2017-2019 Hiroshi Tokumaru 25
ウェブアプリケーションセキュリティ入門
Copyright © 2017-2019 Hiroshi Tokumaru 26
本日使用する脆弱なアプリケーション
Copyright © 2017-2019 Hiroshi Tokumaru 27
山田 祥寛 (著)
Ruby on Rails 5 アプリケーションプログラミング
技術評論社 (2017/4)と Rails Tutorialのサンプルに
脆弱性を加えましたw
※オリジナルに脆弱性があるわけではありません
OSコマンドインジェクション
Copyright © 2017-2019 Hiroshi Tokumaru 28
OSコマンドインジェクションとは何か?
• シェル(/bin/sh)呼び出し可能な機能を悪用して
攻撃者が勝手にコマンドをサーバー上で
実行できる脆弱性
Copyright © 2017-2019 Hiroshi Tokumaru 29
Open3#capture3 のマニュアルにOSコマンドインジェクションのヒントが…
30https://docs.ruby-lang.org/ja/latest/method/Open3/m/capture3.html
シェルにおける ; の意味は?
Copyright © 2017-2019 Hiroshi Tokumaru 31
Open3.capture3("echo a; sort >&2", :stdin_data=>"foo¥nbar¥nbaz¥n")
; sort は echo コマンドに続けてsort コマンドを実行するという意味
Open3.capture3("cmd #{params[:p]}", :stdin_data=>"foo¥nbar¥nbaz¥n")
params[:p] に ; xxx を入れたら、xxxコマンドが実行できる
シェルにおける ; の意味は?
Copyright © 2017-2019 Hiroshi Tokumaru 32
Open3.capture3("echo a; sort >&2", :stdin_data=>"foo¥nbar¥nbaz¥n")
; sort は echo コマンドに続けてsort コマンドを実行するという意味
Open3.capture3("cmd #{params[:p]}", :stdin_data=>"foo¥nbar¥nbaz¥n")
params[:p] に ; xxx を入れたら、xxxコマンドが実行できる
Open3.capture3("echo a; sort >&2 "
シェルにおける ; の意味は?
Copyright © 2017-2019 Hiroshi Tokumaru 33
Open3.capture3("echo a; sort >&2", :stdin_data=>"foo¥nbar¥nbaz¥n")
; sort は echo コマンドに続けてsort コマンドを実行するという意味
Open3.capture3("cmd #{params[:p]}", :stdin_data=>"foo¥nbar¥nbaz¥n")
params[:p] に ; xxx を入れたら、xxxコマンドが実行できる
Open3.capture3("echo a; sort >&2 "#{params[:p]}
ここを変数にすると
OSコマンドインジェクション脆弱性
OSコマンドインジェクションの原理
• 以下の脆弱なスクリプト
system("/usr/sbin/sendmail <mail.txt #{mail}");
• mail として下記を設定する場合
mail = 'a@example.jp; cat /etc/passwd';
• 実行されるコマンドは下記となる
/usr/sbin/sendmail <mail.txt a@example.jp; cat /etc/passwd
• セミコロン「;」は二つ以上のコマンドを続けて実行するとい
う意味なので、sendmailに続いて、
cat /etc/passwdが実行されてしまう
Copyright © 2017-2019 Hiroshi Tokumaru 34
OSコマンドインジェクションの影響と対策
• 影響
– 任意のコマンドが実行されてしまうので影響は非常に大きい
– wgetコマンド等を利用して攻撃スクリプトを外部からダウロードされる
– 外部からは攻撃できないが、内部からは攻撃できる脆弱性による権限昇格(Local Exploit) → root
権限の奪取
– ファイルの更新(改ざん)、削除、作成
– システムの停止
– 外部のサーバーに対する攻撃(踏み台)
• 対策:以下のいずれかを実施する
– 外部コマンドを起動する実装を避ける
– シェルの呼び出し機能のある関数を避ける
Open3.capture3(‘command’, parameter, …) # コマンドとパラメータを分離する
Kernel#open() や File.read() (Ruby 2.6未満)はパイプ記号でコマンドを起動できる
例: File.read("|cat /etc/passwd")
– 外部からのパラメータをコマンドラインに渡さない
例: sendmailコマンドの –t オプション
35Copyright © 2017-2019 Hiroshi Tokumaru
クロスサイト・リクエストフォージェリ(CSRF)
Copyright © 2017-2019 Hiroshi Tokumaru 36
37
https://piyolog.hatenadiary.jp/entry/
20121008/1349660951より引用
クロスサイト・リクエストフォージェリの原理
Copyright © 2017-2019 Hiroshi Tokumaru 38
POST /45/45-003.php HTTP/1.1
Referer: http://example.jp/45/45-002.php
Content-Type: application/x-www-form-urlencoded
Host: example.jp
Cookie: PHPSESSID=isdv0mecsobejf2oalnuf0r1l2
Content-Length: 9
pwd=pass1
POST /45/45-003.php HTTP/1.1
Referer: http://trap.example.com/45/45-900.html
Content-Type: application/x-www-form-urlencoded
Host: example.jp
Cookie: PHPSESSID=isdv0mecsobejf2oalnuf0r1l2
Content-Length: 9
pwd=pass1
正常系のHTTPリクエスト
CSRF攻撃時のHTTPリクエスト
Referer
以外は変
わらない
CSRFはなぜ危険か?
• CSRFとは…
– FORMのACTIONってクロスドメインで指定できるよね
– だから、FORMを踏ませる罠が作れるよね
– 投稿、パスワード変更、購入、設定変更…
– 攻撃者はFORMの実行結果は見られないので、DB更新や削除などが問題となる
• 最悪ケースの危険性は、SQLインジェクションやXSSほどではない
• 脆弱性のあるページの機能の悪用にとどまる
• 脆弱性の発見が容易
• 脆弱性の悪用が容易
• 実際に悪用されている
Copyright © 2017-2019 Hiroshi Tokumaru 39
CSRF対策の方法は?
• Ruby on RailsはGET以外のリクエスト全てにトークンを要求する
• 素直にRuby on Railsを使う限り、CSRF脆弱にする方が難しいw
• 脆弱性が混入する主なパターン
– トークンのチェックを無効化してしまった
– Railsの流儀に従わずに処理を書いた(例: GETメソッドで更新処理を受け取る)
– わざとCSRFチェックを無効化する
protect_from_forgery :except => :create # デモを見よう
Copyright © 2017-2019 Hiroshi Tokumaru 40
クロスサイト・スクリプティング(XSS)
Copyright © 2017-2019 Hiroshi Tokumaru 41
クロスサイトスクリプティング(XSS)とは何か?
• クロスサイトスクリプティング(XSS)は、
攻撃者が、攻撃対象のページに
JavaScriptを勝手に埋め込める脆弱性
Copyright © 2017-2019 Hiroshi Tokumaru 42
Ruby on RailsでXSS脆弱にする方法
• 3分間クッキングで説明したように、基本的にRuby on Railsで開発し
たアプリケーションはXSS対策がなされている
– …が、例外もある
– URLを指定する href 属性や src 属性に javascript: スキームを入力する
– その他、後述の状況
• 以下を使えば、HTMLエスケープされないのでXSS脆弱になる
– <%== 文字列 %>
– <% raw 文字列 %>
– <% 文字列.html_safe %>
Copyright © 2017-2019 Hiroshi Tokumaru 43
Demo
Copyright © 2017-2019 Hiroshi Tokumaru 44
XSSのデモ
• 先ほどのCSRF対策済みの掲示板でなりすまし書き込みをやってみよう
• 実行するスクリプトは下記のもの
Copyright © 2017-2019 Hiroshi Tokumaru 45
var s = document.body.innerHTML;
if (s.indexOf('<h1>徳丸' + '浩</h1>') >= 0 &&
s.indexOf('〇〇小学校を襲撃して' + '皆殺しにしてやる') < 0) {
var token = document.getElementsByName('authenticity_token')[0].value;
var req = new XMLHttpRequest();
req.open('POST', '/microposts');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
data = 'utf8=%E2%9C%93&commit=Post&micropost%5Bpicture%5D=&micropost%5Bcon
tent%5D=〇〇小学校を襲撃して' + '皆殺しにしてやる&authenticity_token='+encodeURICo
mponent(token);
req.send(data);
}
XSSはなぜ危険か?
• XSSは、
– 利用者(被害者)のブラウザ上で
– 攻撃対象のドメイン(オリジン)で
– 攻撃者が自由にJavaScriptを実行できる
• これって、ウイルス?
– ウイルスではないが、結果としてウイルスと同じような被害
– XSSを悪用したウイルス(ワーム)はいくつかある
• ブラウザを乗っ取られたのと同じ
– 影響範囲はXSS脆弱性のあるページと同じドメイン(オリジン)
– 同一オリジン上はすべてのページが影響を受ける
※オリジン=ホスト名+スキーム+ポート番号
Copyright © 2017-2019 Hiroshi Tokumaru 46
クロスサイトスクリプティングの影響
• 攻撃を受けた人のパソコンが遠隔操作される
– なりすまし投稿
– なりすましの買い物
– 情報漏えい
• 影響は、脆弱性のあるサイト全体に及びます
– 「重要でない」ページに影響があっても、個人情報漏洩なども起こりえる
• 他のサイトには直接影響はない
• 攻撃を受けた人(サイトを閲覧した人)のみに影響は限られる
Copyright © 2017-2019 Hiroshi Tokumaru 47
XSSの対策
• 基本的にRuby on Railsの流儀に従えば大半の箇所を対策してくれる
• 以下に注意
– src属性、href属性等URLを受け取る属性 → URLのバリデーション
– JavaScriptの動的生成(とくに文字列リテラル)
– DOM Based XSS
Copyright © 2017-2019 Hiroshi Tokumaru 48
JavaScript(イベントハンドラ)を一部動的生成
Copyright © 2017-2019 Hiroshi Tokumaru 49
ボタンを押してください
<input type="button" value="Go" onclick="foo('<%= @msg %>')">
<p id="msg"></p>
<script>
function foo(msg) {
$('#msg').text(msg);
}
</script>
イベントハンドラ動的生成XSSの原理
• onclick="foo('<%= @msg %>')" にて以下を指定
@msg = "');alert('Cracked!')//"
• HTMLとしては以下が生成される
onclick="foo('&#39;);alert(&#39;Cracked!&#39;)//')"
• JavaScript処理系にはHTMLエスケープをデコードしてから渡される
foo('');alert('Cracked!')//')
Copyright © 2017-2019 Hiroshi Tokumaru 50
イベントハンドラ動的生成XSSの対策
• 原因
– イベントハンドラ内の文字列リテラルは、JavaSriptとしてのエスケープをして
からHTMLエスケープしなければならないが、JavaScriptとしてのエスケープが
抜けている
• 対策(以下のいずれか)
– JavaScriptの動的生成をせずに、カスタムデータ属性経由にパラメータを渡す
<div id="main" data-msg="<%= @msg %>"> <!-- データ定義 -->
$('#msg').text($('#main').data('msg')); // データ参照
– JSON形式でデータを渡す
onclick="foo(<%= @msg.to_json %>)" <!-- クォートしない -->
Copyright © 2017-2019 Hiroshi Tokumaru 51
Dom Based XSS
Copyright © 2017-2019 Hiroshi Tokumaru 52
<body>
<script>
window.addEventListener("hashchange", chghash, false);
window.addEventListener("load", chghash, false);
function chghash() {
var hash = decodeURIComponent(window.location.hash.slice(1));
var color = document.getElementById("color");
color.innerHTML = hash;
}
</script>
<a href="#赤">赤</a>
<a href="#緑">緑</a>
<a href="#青">青</a>
<p id="color"></p>
</body>
脆弱な例: フラグメント識別子を表示するだけのスクリプト
DOM Based XSSの攻撃例
• Script要素による攻撃は有効にならない
<script>alert(1)</script> など
• img 要素のonerror属性などは攻撃に使える
<img src=# onerror=alert(1)>
• 上記を含むHTMLをinnerHTMLに挿入すると、JavaScriptが実行される
• document.writeであれば、script要素でも攻撃可能
Copyright © 2017-2019 Hiroshi Tokumaru 53
対策: Dom Based XSS
• 『DOM Based XSS』に関するレポート に詳しい
• document.writeやinnerHTMLの使用を避ける
• DOM操作APIを用いる or 適切なエスケープ処理
• jQueryを用いる場合は html()メソッドではなく、text()メソッドを用いる
function chghash() {
var hash = window.location.hash;
var color = document.getElementById("color");
// color.innerHTML = decodeURIComponent(window.location.hash.slice(1)); // 脆弱
color.textContent = decodeURIComponent(window.location.hash.slice(1)); // 対策
}
Copyright © 2017-2019 Hiroshi Tokumaru 54
SQLインジェクション
Copyright © 2017-2019 Hiroshi Tokumaru 55
SQLインジェクションとは何か?
• 攻撃者が
ウェブアプリケーションが利用するSQL文の意味を変更したり
追加のSQL文を勝手に実行できる脆弱性
Copyright © 2017-2019 Hiroshi Tokumaru 56
脆弱なスクリプト例
• Ruby on Ralisを正しく使っていればSQLインジェクションは防げる
• だめな例1 whereメソッドの引数に値を埋め込んでいる
– @books = Book.where("price >= #{params[:price]}")
• だめな例2 演算子として外部パラメータを埋め込み
– @books = Book.where("price #{params[:op]} ?“, params[:price])
• だめな例3 orderメソッドに外部パラメータを指定
– @books = order ? Book.order(params[:order])
Copyright © 2017-2019 Hiroshi Tokumaru 57
Demo
SQLインジェクションはなぜ危険か?
• 攻撃対象サーバーのデータベースについて、攻撃者が自由にSQL呼び
出しができる
• データベースの中身の漏洩、改ざんが起こる
• 脆弱性のあるテーブルだけでなく、データベース内のすべてのデータ
が漏洩できる。場合によっては改ざんも
• 使い勝手の良い攻撃ツール(SQL注入工具:名目は診断ツール)が安価
で流通している
• SQL注入工具はExcel使うより簡単だよ
Copyright © 2017-2019 Hiroshi Tokumaru 58
SQLインジェクション対策
• Ruby on Railsの機能を素直に使うこと(原則)
• 以下に注意
– whereメソッドはプレースホルダを使う
– whereメソッドの式に外部からの値を含めない
Book.where("price <= ?", price)
– 演算子等はバリデーションか、配列参照で
– orderメソッドにも注意(以下のいずれか)
• 列名のバリデーション
• 列名をシンボルに変換する(シンボルだと列名としてエスケープされる)
※to_symによる対策の妥当性について意見をください!
Copyright © 2017-2019 Hiroshi Tokumaru 59
パスワードの保存
Copyright © 2017-2019 Hiroshi Tokumaru 60
情報漏えい対策、大丈夫?=専門家「自己防衛を」-宅ふぁいる便の不正アクセス
大阪ガス子会社オージス総研(大阪市)が提供するファイル転送サー
ビス「宅ふぁいる便」の会員情報約480万人分が、不正アクセス被害
を受けて流出した。暗号化されていない状態のパスワードなども含まれ
ることから、同社の情報管理の甘さを指摘する声がある一方、専門家は
「パスワードの使い回しをやめるなど自己防衛も心掛けて」と利用者に
対しても注意を促している。
宅ふぁいる便は、画像や動画などメールで送れない大量データを転送
するサービス。無料で利用でき、仕事で使っている人も多いとみられる。
退会者を含む会員の名前や生年月日に加え、ログインに必要なメール
アドレスやパスワードも流出した。パスワードは暗号化されずに管理さ
れており、ITジャーナリストの三上洋氏は「かなり古い仕組み。ここ
15年くらいで一番ひどい被害だ」と指摘する。
61
https://www.jiji.com/jc/article?k=2019020100206&g=soc より引用
宅ふぁいる便 – パスワードは平文保存だった
62
https://www.filesend.to/faq.html より引用
パスワードリスト攻撃の脅威
63Copyright © 2017-2019 Hiroshi Tokumaru
どうして暗号化ではなくてハッシュなの?
• 暗号化の場合、鍵の管理が難しい
• アプリケーションは鍵を使わなければならないが、攻撃者には鍵を見せたくない
• PSNの事件では、権限昇格されたことになっているので、暗号鍵も盗まれている
と想定せざるを得ない
• ハッシュだと鍵を使わないので、鍵管理のわずらわしさがない
• パスワードをサイト管理者にも知られたくないというニーズも
– 暗号化されたパスワードだと、サイト管理者やヘルプデスク担当者がパスワードを知り得るの
が嫌だ
– ヘルプデスクに見せないようにするには、サポート用画面の機能次第で可
– 管理者の悪事は総合的な対策が必要で、パスワードの問題だけではない
• PCI-DSS2.0 8.4項には「8.4 強力な暗号化を使用して、すべてのシステムコンポー
ネントでの伝送および保存中のすべてのパスワードを読み取り不能にする」とあ
り、ハッシュを求めてはいない
© 2016-2018 EG Secure Solutions Inc.
ハッシュで保存されたパスワードは本当に安全なの?
• 一般的に、(暗号論的)ハッシュ値から平文を「復元する」ことはできない
– 「password」のMD5ハッシュ: 5f4dcc3b5aa765d61d8327deb882cf99
• しかし、パスワードの場合は特別な事情がある
• 例:4桁の暗証番号をハッシュ値で保存している場合
– 全ての可能性は1万通りしかないのだから、総当たりで確認すれば、平文の暗証番号はすぐに
判明する
– 参考: https://z.tokumaru.org/2014/02/6php025.html
• 原理は8桁パスワードでも同じ
• ハッシュ保存の場合、アルゴリズムは攻撃者が知っている前提で安全な設計とす
る
– 平文パスワード以外は、すべて「ばれている」想定を置く
• 攻撃者にとって未知であることが保証された情報があれば、それを鍵として暗号
化すればよい。現実にはそのような保証がないから暗号化を用いない
© 2016-2018 EG Secure Solutions Inc.
650万件のパスワードハッシュのうち540万件が1週間で解読
http://securitynirvana.blogspot.jp/2012/06/final-
word-on-linkedin-leak.html より引用
https://twitter.com/jmgosney/statuses/213212108924522496 より引用
Surviving on little more
than furious passion for
many sleepless days, we
now have over 90% of the
leaked passwords
recovered.
25GPUのモンスターマシン(パスワード解析用!)
http://passwords12.at.ifi.uio.no/Jeremi_Gosney_Password_Cracking_HPC_Passwords12.pdf より引用
Saltってなに?
• ソルト(Salt)とは、ハッシュの元データ(パスワード)に追加する文字列
• ユーザ毎にソルトを変えることで、パスワードが同じでも、異なるハッ
シュ値が得られる
– ソルトがない場合、パスワードの組み合わせ回数分ですむが、ソルトがあると、×
ユーザ数 に試行回数が増える
– LinkedInの場合は、試行回数が 650万倍に !
• ソルトの要件
– ある程度の長さを確保すること
– ユーザ毎に異なるものにすること
• ソルトには乱数を用いることが多いが、乱数が必須というわけではない
• ソルトは秘密情報ではない。ソルトは、通常ハッシュ値と一緒に保存する
© 2016-2018 EG Secure Solutions Inc.
Stretchingってなに?
• ストレッチング(Stretching)とは、ハッシュの計算を繰り返すこと
• ハッシュの計算を遅くすることにより、辞書攻撃や総当たり攻撃に対抗する
• 1万回ストレッチすると、「 GPUモンスターマシンで20分掛かる」が20万分にな
る計算
– 20万分 = 139日 …
• 「悪い」パスワードまで救えるわけではない
– 「password」というパスワードをつけていたら、100万回ストレッチしてもすぐに解読されて
しまう
• 十分長いパスワードをつけてもらえば、ストレッチングは必要ない
– 1文字パスワードを長くすることは、約90回のストレッチングに相当する。パスワードを2文字
長くしてもらえば…
– ストレッチングは、「弱いパスワード」の救済の意味がある
• ストレッチングはメリットとデメリットがあるので、導入の有無と回数をよく検
討すること
© 2016-2018 EG Secure Solutions Inc.
対策
• Ruby on Railsはパスワードの安全なハッシュ保存機能がある
• Rails Tutorialを勉強しましょう…余計なことはしない方が無難です
70
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-a_hashed_password
プラットフォームの脆弱性対応
Copyright © 2017-2019 Hiroshi Tokumaru 71
OS(Linux等)のパッチ適用を忘れずに
Copyright © 2017-2019 Hiroshi Tokumaru 72
181 packages can be updated.
99 updates are security updates.
Ruby や Ruby on Railsの脆弱性も
https://gist.github.com/mala/bdcf8681615d9b5ba7814f48dcea8d60 より引用 73
プラットフォームの脆弱性対応
• 使用ソフトウェアのサポートライフサイクルポリシーを確認する
– 例: RHEL/CentOSは10年サポート、Debian/Ubuntu(LTS)は5年サポート
– CentOS6 : 2020年11月30日まで
– CentOS7 : 2024年6月30日まで
• OSのアップデート
$ sudo yum update # or yum upgrade
$ sudo apt upgrade
• Ruby on Railsのアップデート
$ sudo bundle update
Copyright © 2017-2019 Hiroshi Tokumaru 74
参考資料
Copyright © 2017-2019 Hiroshi Tokumaru 75
76https://railstutorial.jp/
77
https://railsguides.jp/security.html
Rails SQL Injection Examples
78
https://rails-sqli.org/
79

More Related Content

What's hot

CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方Hirokazu Ouchi
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-Tomohiro Nakashima
 
ぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic Cloudぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic CloudElasticsearch
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかAmazon Web Services Japan
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-Yuta Imai
 
緊急Ques - コードのメトリクスに基づくリファクタリング戦略
緊急Ques - コードのメトリクスに基づくリファクタリング戦略緊急Ques - コードのメトリクスに基づくリファクタリング戦略
緊急Ques - コードのメトリクスに基づくリファクタリング戦略Tomoki Kuriyama
 
Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!Project Samurai
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
SQLインジェクション総”習”編
SQLインジェクション総”習”編SQLインジェクション総”習”編
SQLインジェクション総”習”編Yasuo Ohgaki
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!デベロッパーネットワーク
 
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門Hiroshi Tokumaru
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーンメトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーンHiroyuki Ito
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 

What's hot (20)

CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
 
ぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic Cloudぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic Cloud
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
 
緊急Ques - コードのメトリクスに基づくリファクタリング戦略
緊急Ques - コードのメトリクスに基づくリファクタリング戦略緊急Ques - コードのメトリクスに基づくリファクタリング戦略
緊急Ques - コードのメトリクスに基づくリファクタリング戦略
 
Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
MongoDBの監視
MongoDBの監視MongoDBの監視
MongoDBの監視
 
SQLインジェクション総”習”編
SQLインジェクション総”習”編SQLインジェクション総”習”編
SQLインジェクション総”習”編
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーンメトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 

Similar to Railsエンジニアのためのウェブセキュリティ入門

安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014Hiroshi Tokumaru
 
Webセキュリティ入門(xss)
Webセキュリティ入門(xss)Webセキュリティ入門(xss)
Webセキュリティ入門(xss)KageShiron
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010Hiroshi Tokumaru
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門Hiroshi Tokumaru
 
Getting Started with Ruby on Rails4 + Twitter Bootstrap3
Getting Started with Ruby on Rails4 + Twitter Bootstrap3Getting Started with Ruby on Rails4 + Twitter Bootstrap3
Getting Started with Ruby on Rails4 + Twitter Bootstrap3Yukimitsu Izawa
 
【JAWS DAYS 2013】ランサーズを支えるAWS
【JAWS DAYS 2013】ランサーズを支えるAWS【JAWS DAYS 2013】ランサーズを支えるAWS
【JAWS DAYS 2013】ランサーズを支えるAWSKei Kinoshita
 
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティHTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ彰 村地
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座DIVE INTO CODE Corp.
 
体系的に学ばないXSSの話
体系的に学ばないXSSの話体系的に学ばないXSSの話
体系的に学ばないXSSの話Yutaka Maehira
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 
ライブコーディングとデモで理解するWebセキュリティの基礎
ライブコーディングとデモで理解するWebセキュリティの基礎ライブコーディングとデモで理解するWebセキュリティの基礎
ライブコーディングとデモで理解するWebセキュリティの基礎Takahisa Kishiya
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座DIVE INTO CODE Corp.
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座NHN テコラス株式会社
 
アプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するにはアプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するにはRiotaro OKADA
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメTakafumi ONAKA
 
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則株式会社スカイアーチネットワークス
 
Works of site reliability engineer
Works of site reliability engineerWorks of site reliability engineer
Works of site reliability engineerShohei Kobayashi
 

Similar to Railsエンジニアのためのウェブセキュリティ入門 (20)

安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 
Webセキュリティ入門(xss)
Webセキュリティ入門(xss)Webセキュリティ入門(xss)
Webセキュリティ入門(xss)
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
 
Getting Started with Ruby on Rails4 + Twitter Bootstrap3
Getting Started with Ruby on Rails4 + Twitter Bootstrap3Getting Started with Ruby on Rails4 + Twitter Bootstrap3
Getting Started with Ruby on Rails4 + Twitter Bootstrap3
 
【JAWS DAYS 2013】ランサーズを支えるAWS
【JAWS DAYS 2013】ランサーズを支えるAWS【JAWS DAYS 2013】ランサーズを支えるAWS
【JAWS DAYS 2013】ランサーズを支えるAWS
 
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティHTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
体系的に学ばないXSSの話
体系的に学ばないXSSの話体系的に学ばないXSSの話
体系的に学ばないXSSの話
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
ライブコーディングとデモで理解するWebセキュリティの基礎
ライブコーディングとデモで理解するWebセキュリティの基礎ライブコーディングとデモで理解するWebセキュリティの基礎
ライブコーディングとデモで理解するWebセキュリティの基礎
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
AWSでの金融系システム構築・運用勘所
AWSでの金融系システム構築・運用勘所AWSでの金融系システム構築・運用勘所
AWSでの金融系システム構築・運用勘所
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座
 
AWS Black Belt Online Seminar 2017 AWS WAF
AWS Black Belt Online Seminar 2017 AWS WAFAWS Black Belt Online Seminar 2017 AWS WAF
AWS Black Belt Online Seminar 2017 AWS WAF
 
アプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するにはアプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するには
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
スカイアーチセミナー:自社アプリをクラウド展開する為の『失敗しない3つの法則
 
Works of site reliability engineer
Works of site reliability engineerWorks of site reliability engineer
Works of site reliability engineer
 

More from Hiroshi Tokumaru

ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証するHiroshi Tokumaru
 
SQLインジェクション再考
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考Hiroshi Tokumaru
 
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入するHiroshi Tokumaru
 
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1Hiroshi Tokumaru
 
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方Hiroshi Tokumaru
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題Hiroshi Tokumaru
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)Hiroshi Tokumaru
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018Hiroshi Tokumaru
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようHiroshi Tokumaru
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座Hiroshi Tokumaru
 
ウェブセキュリティの常識
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識Hiroshi Tokumaru
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則Hiroshi Tokumaru
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりHiroshi Tokumaru
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くHiroshi Tokumaru
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016Hiroshi Tokumaru
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうHiroshi Tokumaru
 
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかにHiroshi Tokumaru
 
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったかHiroshi Tokumaru
 

More from Hiroshi Tokumaru (20)

ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
 
SQLインジェクション再考
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考
 
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
 
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
 
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
 
秀スクリプトの話
秀スクリプトの話秀スクリプトの話
秀スクリプトの話
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
 
ウェブセキュリティの常識
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
 
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
 
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

Railsエンジニアのためのウェブセキュリティ入門