一人前エンジニア道場

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を、攻撃者が自分のサイトに置いたらどうなるでしょうか。ログイン中のユーザーがそのページを開いただけで何が起きるか考えてみましょう。

スキルセルフチェック

このレッスンの内容をどの程度理解できましたか?