Webセキュリティの基礎 / 約20分
CSRF対策とHTTPS
なぜこれを学ぶか
「ログイン中のユーザーが、知らないうちに意図しない操作をさせられる」——CSRFはそんな攻撃です。仕組みを知れば対策はシンプルです。
CSRF(Cross-Site Request Forgery) は、ブラウザがCookieを自動的に送信する性質を悪用する攻撃です。攻撃者が用意した罠サイトから、ユーザーが気づかないうちに正規サイトへリクエストが送られ、ログイン中のCookieが自動で付与されてしまいます。
基本の対策は CSRFトークン です。フォームに秘密の値を埋め込み、サーバー側で「正しいページから送信されたか」を検証します。罠サイトはこのトークンを知らないため、リクエストが弾かれます。
Cookieの SameSite 属性(Strict/Lax/None)を設定することも重要な対策です。他サイトからのリクエストにCookieを自動送信しないよう制限できます。
HTTPS は通信を暗号化し、盗聴・改ざんを防ぎます。Cookieのsecure属性はHTTPS通信でのみ有効になるため、CSRF対策・セッション管理とHTTPSはセットで考える必要があります。
重要ポイント
- CSRFはCookieの自動送信を悪用する攻撃
- CSRFトークン + SameSite Cookieが基本対策
- secure属性の効果を得るためにもHTTPSは必須
コードレビュー演習
ある送金フォームのHTMLです。このフォームには重大なセキュリティ上の問題があります。
<form action="/api/transfer" method="POST">
<input type="hidden" name="to" value="12345" />
<input name="amount" placeholder="金額" />
<button type="submit">送金する</button>
</form>このフォームに欠けている対策と、それによって起きうる問題は?
ヒントを見る
このフォームと全く同じHTMLを、攻撃者が自分のサイトに置いたらどうなるでしょうか。ログイン中のユーザーがそのページを開いただけで何が起きるか考えてみましょう。
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?