問題
クロスサイトリクエストフォージェリ(CSRF)の対策に関する記述として、適切なものはどれか。
ア)CSRF対策としては、フォームの送信内容をエスケープ処理することが最も有効である。
イ)CSRF対策の一つとして、フォームに推測困難なトークン(CSRFトークン)を埋め込み、リクエスト受信時にそのトークンを検証することで、正規の画面を経由しないリクエストを拒否する方法がある。
ウ)CSRFは、攻撃者がサーバに直接不正なSQL文を送り込む攻撃であるため、プレースホルダの使用が根本的な対策となる。
エ)CSRF対策では、Cookieの内容をJavaScriptから読み取れないようにするHttpOnly属性の設定が最も重要な対策である。
解答・解説を見る
正解: イ)
解説:
- ア)フォーム送信内容のエスケープ処理はXSS(クロスサイトスクリプティング)対策として有効な手法であり、CSRF対策として最も有効な手段ではありません。誤りです。
- イ)CSRF対策の代表的な手法として、正規のフォーム画面に推測困難なランダムなトークン(CSRFトークン)を埋め込み、サーバ側でリクエスト受信時にそのトークンが正しいかを検証する方法があります。これにより、攻撃者が用意した別サイトから正規のトークンなしに送信された不正なリクエストを検知・拒否できます。正解です。
- ウ)サーバに直接不正なSQL文を送り込む攻撃は「SQLインジェクション」であり、CSRFの説明として誤りです。CSRFは、利用者が別サイトを閲覧中に、意図せず正規サイトへ不正なリクエストを送信させられてしまう攻撃です。
- エ)HttpOnly属性は、Cookieの値をJavaScriptから読み取れないようにすることでXSSによるCookie窃取を防ぐ対策であり、CSRF対策として直接的に機能するものではありません(CSRF対策にはCSRFトークンやSameSite属性などが有効です)。誤りです。
重要キーワード
| 用語 | 説明 |
|---|---|
| CSRF | 利用者に意図せず不正なリクエストを送信させる攻撃 |
| CSRFトークン | リクエストの正当性を検証するための推測困難な値 |
| SameSite属性 | 他サイトからのリクエストにCookieを送信しないよう制御する属性 |
| HttpOnly属性 | JavaScriptからCookieを読み取れないようにする属性 |