CSRF

2023-02-19 (日) 19:30:03

CSRF とは

名称

  • Cross-Site Request Forgeries
  • クロスサイトリクエストフォージェリ
  • XSRF

概要

  • Webサイトのユーザ認証セッション管理の脆弱性を悪用して、利用者にWebアプリケーションに対して不正な処理要求を行わせる攻撃手法。
  • 攻撃者が用意したサイトから不正なHTTPリクエストを送信するスクリプトが組み込まれたページをダウンロードさせ、ログイン済のサイトで利用者が意図しない処理を実行させる攻撃。
  • 不正な処理は、サーバ側で実行される。(クライアント側で実行されるのは、XSS

攻撃の仕組み

  • form要素のaction属性に、他のサイトのドメインを指定する。
  • form要素のsubmitが、action属性にクロスドメインが指定されていても、JavaScriptから操作できるHTMLの仕様を悪用。
  • ユーザが意図しないformの送信が行われる。

対策

攻撃を防ぐ方法

  • ログイン後、HTTPレスポンスに毎回異なる値を含めて、HTTPリクエストのたびに送信されるその値をWebサーバ側で照合する(異なっていた場合はエラーにする)
    • POSTメソッドのhiddenに秘密情報(ランダム値など)を挿入しておいてチェックする
  • HTTPリファラを確認して画面遷移の正当性(正しいリンク元からの遷移であるか)を確認する
    • クライアントの設定でHTTPリファラを送信しないようにしている場合は、正当なリクエストの場合も排除されてしまう
  • 重要な操作や確定処理を行なう際に、パスワードの再入力を要求する。
  • Captchaを利用する。

攻撃があったことをユーザに気づかせる方法

  • 重要な操作があったことをメールで通知する

関連サイト

関連用語