#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]]