CSRFについて調べてみました。まずは、用語から。私の手元にある本で調べてみました。
「PHPサイバーテロの技法」(GIJOE著)では、「2つのサイトにまたがって行われる偽のリクエスト」(p.43)、「サイトについての権限を持った人に重大な不正操作を強いる攻撃」(p.64)といった記述があります。
「体系的に学ぶ 安全なWebアプリケーションの作り方」(徳丸浩著)では、「取り消しできない重要な処理」(p.141)という記述があり、「重要な処理」の例は、クレジットカードでの決済、口座からの送金、メール送信、パスワード・メールアドレスの変更等があげられています。
「php逆引き大全 516の極意」(大家正登, 鮫島康浩, 谷中志織, 茂木健一著)では、「被害者自信の操作で意図しないHTTPリクエストを送信させる攻撃手法」(p.641)という記述があります。
では、「(被害者を)こっそりログインさせる攻撃」はどうでしょう。「php逆引き大全 516の極意」の定義では CSRF に当てはまります。一方、「体系的に学ぶ 安全なWebアプリケーションの作り方」の定義にはあてはまりません。「PHPサイバーテロの技法」では、「2つのサイトにまたがって行われる偽のリクエスト」にあてはまりますが、「サイトについての権限を持った人に重大な不正操作を強いる攻撃」とまでは言えないでしょう。
では、不正操作をされないように対策しましょう。
CSRF対策
(クロスサイトスクリプティング対策と比較すると)CSRF対策は比較的楽です。具体的には、
- 重要な処理を行う直前のページでトークン発行
- 重要な処理を行うページでトークンをチェックする
となります。なお、「体系的に学ぶ 安全なWebアプリケーションの作り方」では、特に重要な処理の場合にパスワード再入力を推奨しています。このほか、(利用者の環境や設定に依存するが)リファラーチェック方法も紹介されています。
CSRF対策は、フレームワーク等で用意されていることが多いと思います。例えば FuelPHP なら、FuelPHP でのセキュリティ対策(2)、WordPress なら、setting API を活用した wordpress プラグイン作成等が参考になると思います。
楽天で検索
【楽天ブックスならいつでも送料無料】【専門書】【3倍】体系的に学ぶ安全なWebアプリケーションの作り方 [ 徳丸浩 ]
3456円
脆弱性が生まれる原理と対策の実践 徳丸浩 SBクリエイティブBKSCPN_【専門書】 発行年月:2011年03月 ページ数:476p サイズ:単行本 ISBN:
楽天ブックス
Supported by 楽天ウェブサービス
楽天で検索
【楽天ブックスならいつでも送料無料】PHP逆引き大全516の極意 [ 大家正登 ]
3024円
大家正登 茂木健一 秀和システム発行年月:2011年09月 ページ数:822p サイズ:単行本 ISBN:9784798030937 大家正登(オオイエマサト)
楽天ブックス
Supported by 楽天ウェブサービス