122 Views
July 19, 16
スライド概要
カジュアルにセキュリティテストはじめよう
2016-07-16 #qpstudy 2016.07
内容は以下と同じです。
http://www.slideshare.net/nekoruri/20160520-casual-securitytest-ci
秋葉原生まれ大手町育ちの歌って踊れる江戸っ子インフラエンジニア。 0と1が紡ぐ「ゆるやかなつながり」に魅せられ早20年、 SNSとCGMの力で世界を幸福にするのがライフワーク。 市民、幸福は義務です。 あなたは幸福ですか?
カジュアルに セキュリティテスト はじめよう 2016-07-16 Aki@nekoruri Xtone ピザ会 qpstudy 2016.07
とは言ったけど • まあ人として普通SQLインジェクション対策とかはしてるよね。 • 「ふつーPrepared Statementだし」 • 「ふつーORMだし」 • 「ふつーNoSQLだし」?
動的クエリからは逃げられない • テーブル名 • 時系列データ • カラム名 • 検索条件 • ソート条件 • IN句 • 数が変わる • 複雑な複合クエリの高速化
人はミスをする • どのORM/DBライブラリでも両方を用意している • パラメータ化される変数 • パラメータ化されず展開される変数
人はミスをする • どのORM/DBライブラリでも両方を用意している • パラメータ化される変数 • パラメータ化されず展開される変数 • MyBatis3の場合 • #{absolutelySafeValue} • ${absolutelySafeValue} ──── パラメータ化 ──── 直接展開
人はミスをする • どのORM/DBライブラリでも両方を用意している • パラメータ化される変数 • パラメータ化されず展開される変数 • MyBatis3の場合 • #{absolutelySafeValue} ──── パラメータ化 • ${absolutelySafeValue} ──── 直接展開 • どっちがどっちかわかるかぼけー!(ノ`Д´)ノ彡┻━┻
それテストできるよ • まあ人として普通テスト書いてるよね。 • 自動テストしよう • 自動CIしよう
「うっかり」から人類を守る4文字 • 以下の4文字をテストデータの末尾に入れるだけ!かんたん! '"\; Special thanks to securitytesting slack #sqli members.
テストデータにこの4文字を入れる事で • 基本的に例外でこけます。 • 例外に落ちなくても結果が変わってテストがこけます。 • 手間はほとんど掛かりません。 どうせテストデータなんてコピペでしょ? • 考えることが減りストレスも減って健康になります。
テストデータにこの4文字を入れる事で • 基本的に例外でこけます。 • 例外に落ちなくても結果が変わってテストがこけます。 • 手間はほとんど掛かりません。 ← 重要 どうせテストデータなんてコピペでしょ? • 考えることが減りストレスも減って健康になります。
世の中SQLインジェクションだけじゃない • はい
セキュリティテストCI • サービスの力を借りる • VAddy http://vaddy.net/ja/ • Walti https://walti.io/ • 自前できちんとセキュリティテスト • Selenium等のエンドツーエンドテスト書いていれば、 OWASP ZAP等のProxyを挟んで脆弱性診断 • Selenium と OWASP ZAP を使った自動脆弱性検査への道 http://www.pupha.net/archives/2467/ ※今自分のところでできているとは言っていない
まとめ • テストデータの末尾に以下の4文字を入れよう '"\; • カジュアルに外部サービスや診断ツールも使おう