技術評論社でブログっぽい記事を書かせて頂いています。4月3日からスクリプトインジェクション対策で注意すべき項目が掲載されます。一般的なスクリプトインジェクション対策「バリデーションしエスケープする」ではなく、万が一スクリプトインジェクションに脆弱であった場合でも被害を最小限に留める対策、見落とされがちな対策を中心に解説しています。
# 一度に書いた記事なのでどう分割されるか私も分かりません。
# 物によっては2回に分割するかもしれないので20弱くらい
# だと思います。
http://gihyo.jp/dev/serial/01/php-security
から最新の一覧を参照できます。
ご意見やご希望などございましたらこのブログから送って頂いても、メールで送って頂いても歓迎致します。ご興味がある方はご覧ください。
現在(4/9)時点では
- 【スクリプトインジェクション対策05】文字エンコーディングは必ずHTTPヘッダで指定する
- 【スクリプトインジェクション対策04】不正なセッションIDの利用がないか記録する
- 【スクリプトインジェクション対策03】セッションIDが利用できる範囲を制限する
- 【スクリプトインジェクション対策02】セッションIDを頻繁に変更する
- 【スクリプトインジェクション対策01】セッションクッキーを利用する
の5つ目の対策まで公開されています。既に公開されている記事もこれから公開される記事も当たり前の事ばかり書いてあります。しかし、既に公開済みの5つのアドバイスを全て守っているサイトやアプリケーションを見つけるのはかなり難しいです。例えば、ほとんどのサイトやアプリケーションはセッションIDを十分な頻度で更新していません。これから他のアドバイスも掲載されますが全て実践しているサイトは無いと思います。様々な制約もあるので全て実践するのは難しいですが、こういった事に気をつけなければならない事を理解していただければと思っています。
今自分で見てみると最初の「セッションクッキーを利用する」で携帯の勝手サイトを作る場合に端末IDをセッションIDの代わりに利用できるが注意しないと簡単にセッションハイジャックされる、と書いています。しかし、どう注意すれば良いか書いてないですね。リクエストの送信元のIPアドレスが対応するキャリアからのアクセスどうかチェックすれば良いです。このチェックを怠ると簡単にセッションハイジャックができてしまうので注意が必要です。
「○○の対策が分かりづらい」「○○の対策は不適切では」などのご意見をお待ちしています。
# でも今は非常に忙しいので速いレスポンスは期待しないでください…