CSRF の変更点


#author("2023-02-19T19:28:28+09:00","default:k1rou","k1rou")
#author("2023-02-19T19:30:03+09:00","default:k1rou","k1rou")
*CSRF とは [#pa7e78a4]
**名称 [#t4b66b62]
-Cross-Site Request Forgeries
-クロスサイトリクエストフォージェリ
-XSRF

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

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

*対策 [#b435cb9e]
**攻撃を防ぐ方法 [#qaff864a]
-ログイン後、HTTPレスポンスに毎回異なる値を含めて、HTTPリクエストのたびに送信されるその値をWebサーバ側で照合する(異なっていた場合はエラーにする)
--POSTメソッドの[[hidden]]に秘密情報(ランダム値など)を挿入しておいてチェックする

-重要な操作や確定処理を行なう際に、[[パスワード]]の再入力を要求する。

-HTTP[[リファラ]]を確認して画面遷移の正当性(正しいリンク元からの遷移であるか)を確認する
--クライアントの設定でHTTP[[リファラ]]を送信しないようにしている場合は、正当なリクエストの場合も排除されてしまう

-重要な操作や確定処理を行なう際に、[[パスワード]]の再入力を要求する。
-[[Captcha]]を利用する。

**攻撃があったことをユーザに気づかせる方法 [#i2d6da92]
-重要な操作があったことをメールで通知する

*関連サイト [#k94ae98f]
-CWE-352: Cross-Site Request Forgery (CSRF)~
https://cwe.mitre.org/data/definitions/352.html

*関連用語 [#b55bf0d7]
-[[セキュリティ]]
-[[不正アクセス]]
-[[XSS]] -クロスサイトスクリプティング
-CSRFトークン
-[[クッキーモンスターバグ]]
-[[乱数]]
-[[OAuth2.0]]
-[[OpenID Connect]]