Top > Cross Site Request Forgeries

[[Web Application]]
TITLE:クロスサイトリクエストフォージェリ (CSRF, XSRF)

※[[クロスサイトリクエストフォージェリー(CSRF, XSRF) | セキュリティゆいがどくそん>http://security.c-inf.com/blog/vulnerability/web-application/csrf/]]へ記事を移行中…
※今後は[[クロスサイトリクエストフォージェリー(CSRF, XSRF) | セキュリティゆいがどくそん>http://security.c-inf.com/blog/vulnerability/web-application/csrf/]]にて記事を更新します…

*クロスサイトリクエストフォージェリ&new(Cross Site Request Forgeries,nolink); [#eb7aa61a]
その名のとおり、サイトを跨って(クロスサイト)ユーザの要求(リクエスト)を偽装(フォージェリ)する攻撃手法です。

[[IT:セキュリティ用語事典[クロスサイトリクエストフォージェリ(CSRF)]>http://www.atmarkit.co.jp/aig/02security/csrf.html]]より引用
>想定していない外部のサイトからのHTTPリクエストにより、本来拒否すべき処理が実行させる攻撃。例えばログイン認証が必要な掲示板や日記サービスに対して、別のWebサイトに用意されたリンクをクリックすることで、掲示板への投稿や退会処理など、正規のアカウントでログインを行わなければできないような処理が実行されてしまう。


//**典型的なCSRFの手順 [#j7779578]
//以下の手順により、リンクをクリックして悪意のあるページを表示するだけで攻撃が成立してしまいます。
//+攻撃者が有名掲示板に、ブラウザで表示すると自動的に対象のブログに記事を書き込むスクリプトが実行されるページへのリンクを貼る。
//+ユーザがブログにログイン中にそのリンクをクリックする。
//+スクリプトが自動的に実行される。
//+ユーザが意図しない、ブログへの書き込みが行われる。

//**脆弱性の有無の確認方法 [#j608ac78]
//例)「1.入力画面」→「2.確認画面」→「3.完了画面」といった構成の場合、1、2、3の流れで操作を完了後、確認画面のURLを直接ブラウザに入力して遷移できるかどうかを試してみます。~
//正常に確認画面が表示され、かつ、その画面のフォーム送信ボタンやリンクをクリックして完了画面に正常に遷移した場合、そのサイトはCSRF攻撃に対して無防備だと判断できます。

#br
**対策 [#x260a6ad]
-&color(Blue){''サーバのセッションに紐付くトークンを使用する。''};~
セッション管理と無関係な文字列では意味が無いということです。~
~
--実装例(「入力」→「完了」という処理フローの場合)~
+++Webアプリケーションがサーバ側で管理するセッション情報に推測困難な文字列(トークン)を記録しておく。
+++ブラウザが入力画面を表示するリクエストをWebアプリケーションに送信する。
+++Webアプリケーションは、ブラウザへのレスポンスにトークンを含ませる。~
※必ずしもアクセスのたびに異なるトークンを生成する必要はありません。セッション単位で一意なトークンでもCSRF対策は可能です。~
+++ユーザが入力画面のフォームに値を記入してWebアプリケーションに送信する。~
送信データにはトークンも含むこと。
+++ユーザからのリクエストを受信したWebアプリケーションは、リクエスト内のトークンとサーバ側のセッション情報に記録したトークンが一致しているかどうかを検証する。~
一致している場合は正常なリクエストであるため、送信されたパラメータを処理した後、完了画面をブラウザに返す。~
一致していない場合は不正なアクセスとみなして処理を中断((強制的に「入力」画面に戻す、エラー画面を表示するなど。))する。

-&color(Blue){''再認証する。''};~
重要な処理の直前にユーザを再認証するのが、アカウント情報を奪われない限りにおいては安全確実です。~
ここで、ユーザIDやパスワードが脆弱((少ない桁数や文字種で構成されている))であったり、再認証画面に総当り攻撃(([[ブルートフォースアタック>Brute Force Attack]]))防止機能が無かったりすると意味がありません。

#br
**参考 [#n9a44d0f]
-[[CSRF対策は基本? | 水無月ばけらのえび日記>http://bakera.jp/ebi/topic/3994]]
-[[高木浩光@自宅の日記 - クロスサイトリクエストフォージェリ(CSRF)の正しい対策方法>http://takagi-hiromitsu.jp/diary/20050427.html#p01]]
-[[mixi/ぼくはまちちゃん! - BtD: Wiki>http://simon.tmn.net/wiki/index.php?mixi%2F%A4%DC%A4%AF%A4%CF%A4%DE%A4%C1%A4%C1%A4%E3%A4%F3%A1%AA]]
-[[Category:OWASP CSRFGuard Project - OWASP>http://www.owasp.org/index.php/CSRF_Guard]]
-[[開発者のための正しいCSRF対策>http://www.jumperz.net/texts/csrf.htm]]
-[[おさかなラボ - CSRF対策法と効果>http://kaede.to/~canada/doc/anti-csrf-method-and-effect]]
-[[Cross Site Request Forgery (CSRF/XSRF) questions and answers>http://www.cgisecurity.com/articles/csrf-faq.shtml]]
-[[@IT:セキュリティ用語事典[クロスサイトリクエストフォージェリ(CSRF)]>http://www.atmarkit.co.jp/aig/02security/csrf.html]]
-[[クロスサイト・リクエスト・フォージェリ:ITpro>http://itpro.nikkeibp.co.jp/article/COLUMN/20051104/224010/]]

Reload   Unfreeze Diff Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes