PHPカンファレンス2011に朝から参加してきました。昨年に続き2回目の参加です。次期バージョンであるPHP5.4のお話やフレームワークまわりのお話を聞きました。知らないことが多くてドキドキしますね。
各セッションはUSTで閲覧可能(メイントラック、ギークトラック、テックトラック)になっているようです。タイムテーブルを見て興味がある方はぜひご覧になってください。
ここでは徳丸さんのセッション「徳丸本に学ぶ安全なPHPアプリ開発の鉄則2011」についてのメモ書きを載せてみます。
USTも貼り付けておきます。
鉄則10 安全なPHP入門書で学習する
- 逆引き、パーフェクトとかがよさそう。(だけど初心者向けともいえない。)
※それぞれ徳丸さんがレビューされています。問題のない安全なPHP入門書は意外とないみたいです。
PHP逆引きレシピ:PHP逆引きレシピは概ね良いが、SQLインジェクションに関しては残念なことに
パーフェクトPHP:CSRF対策のトークンをワンタイムにしたら意図に反して脆弱になった実装例
- せめてXSS,SQLインジェクションぐらいは対策方法をしっかり書いて。修正するのが後からでは至極大変。
- 今回某所から示したサンプルで「ああこの参考書ダメだなぁ」と思う人はぜひ書いてほしい。
鉄則9 入力-処理-出力で適切な処理を行うこと
- 入力はあくまでもアプリケーションの正常な動作を保障するために行うこと。
鉄則8 安全なSQLライブラリを選定して正しく使う
- 静的プレースホルダ、文字エンコーディング指定が使用可能、文字エンコーディング指定が正しく反映されること、バックスラッシュのエスケープの設定がDBに反映されること(資料ではバックスペースとの記載が混在していますが、すべてバックスラッシュのことかと)
- 安全なSQLの呼び出し方に詳しく説明
- MDB以外にPHP5.3.8以降はPDOも使えるレベルになった。(詳しくは徳丸さんのこのエントリ。「PDOにおける一応の安全宣言と残る問題点 −徳丸浩の日記」)
- こちらも参考「Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。-*「ふっかつのじゅもんがちがいます。」withぬこ」
鉄則7 XSS対策の第一歩はhtmlspecialcharsを正しく使うことから
鉄則6 ファイルアップロードは罠がいっぱい
鉄則5 今時文字コードのセキュリティ気にしなくていいのは小学生までだよね
- 去年講演した文字コードのセキュリティの話が結構反響が良かった。詳しくはこちら。(文字コードに起因する脆弱性とその対策(増補版))
- 入力時の文字エンコーディングが大きく取り上げられるものをよく見かけるが、決して入力だけではない点に注意。
鉄則4 2010年代のWebサイトはクリックジャッキング対策をしよう
- クリックジャッキングのデモあり。UST 21分10秒より。
- クリックジャッキングの影響はCSRFと同等。
- 対策として、クリックジャッキングをされて困るページは最新のブラウザ(IE8以降)とX-FRAME-OPTIONSを使おう。
※ X-FRAME-OPTIONSについては徳丸本P63にコラムとして掲載されているそうです。あとはここで解説されています。(X-FRAME-OPTIONS を用いたクリックジャッキング対策)
鉄則3 パスワードの保存はhash(pass.salt)の繰り返し(Stretching)
- パスワードのハッシュ化は暗号化で用いる鍵管理の難しさもあって取られる方法。
- 8桁ぐらいのパスワードならレインボーテーブルを用いたり、GPUを利用することで簡単に破られてしまう。
- レインボーテーブルを用いたデモあり。31分28秒より。
- MD5だからダメでSha256だから良いというわけでもない。
- レインボーテーブルを用いたパスワード対策としてソルトを利用。
- ストレッチングはブルートフォース攻撃等の計算時間を稼ぐ面で有効だが、デメリットもある。
鉄則1 徳丸本を買ってよく読め
- こちらからどうぞ。