試験対策としては、CSRF攻撃が「ログイン状態のCookie自動送信」を悪用していることを理解し、その脆弱性を排除するための「有効な防御策」を問う問題に対応できるようにすることが不可欠です。代表的な対策には以下のものがあります。
・ワンタイムトークン(CSRFトークン)の利用: 最も標準的な対策です。Webサービスがユーザーに対して入力画面を返す際、予測不可能な使い捨てのランダムな文字列(トークン)を発行し、セッションと画面内のフォームの両方に埋め込みます。データ送信時に両方のトークンが一致するかを検証します。罠サイトから直接送られてきたリクエストにはこのトークンが含まれていない(または一致しない)ため、Webサービス側は攻撃を遮断できます。試験ではこれが最も有効な対策として頻出します。
・パスワードの再入力(再認証): 商品の購入確定やパスワード変更などの重要な操作の直前に、再度現在のパスワード入力を求めることで、外部からの自動リクエストを防御します。
・CookieのSameSite属性の設定: Cookieに「SameSite=Lax」または「SameSite=Strict」を設定し、異なるサイト(クロスサイト)から送られてきたリクエストに対してはセッションCookieを添付しないように制限します。
ブラウザでセッション状態を管理しCSRFで自動添付される情報「Cookie」、利用者のブラウザ上でスクリプトを実行させる脆弱性「クロスサイトスクリプティング(XSS)」、通信が正しいWebサイトから行われたかを確認するための暗号トークン「CSRFトークン」などがあります。