「このフォーム、CSRF(シーサーフ)の対策は大丈夫?」

Webサイトの公開前、エンジニアさんが心配そうに聞いてきました。私は「シー……サーフ? なんだか、海でサーフィン(Surf)でもするのかな? 夏休みの計画の話?」と、のんきなことを考えていました。

とりあえず 「波に乗っていきましょう!」 と笑顔で答えましたが、周囲からは「……いや、勝手に操作を代行されちゃう攻撃のことだよ」と呆れられ、またしても「スポーツ脳」な勘違いに赤面する羽目に……。

これ、実はあなたが気づかないうちに、悪い人に「勝手にお願いごと」をされてしまう、とっても恐ろしい攻撃のことです。今回は、勝手にハンコを押される 「偽の委任状」 に例えて、その正体をやさしく解説します!

CSRFとは? 一言でいうと「あなたのフリをして『勝手にお願い(操作)』をさせる攻撃」

結論から言うと、CSRF(Cross-Site Request Forgery:クロスサイト・リクエスト・フォージェリ)とは、「Webサイトにログイン中のユーザーを騙して、本人の意図しない操作(購入、退会、設定変更など)を強制的に実行させる攻撃」 のことです。

街の 「手続き」 に例えてみましょう。

  • 健全なサイト:あなたが自分の意志で「この商品を買います」とハンコを押す場所。
  • CSRF(攻撃)「悪い人が作った『偽の委任状』」。
  • 被害:あなたが別の怪しいサイト(罠)を見た瞬間、裏側で 『私はこの商品を100個買います!』 という委任状が勝手に作成され、あなたがログインしている通販サイトへ送られてしまう。

通販サイト側は、あなたが今まさにログイン中(本人確認済み)なので、「あ、本人からのお願いだね!」と信じてしまい、注文を受け付けてしまいます。

あなたは「何もしていない」つもりでも、裏側で勝手に「代筆(代行)」されてしまうのが、CSRFの怖さです。

ビジネスの現場でCSRFという言葉が出る場面

Webサービスの開発や、セキュリティ診断のシーンで頻繁に登場します。

1. 「トークン(合言葉)を発行して、CSRF攻撃を防ごう」

意味:
「委任状が偽物じゃないことを証明するために、一回使い切りの『秘密の合言葉』をメモに添えるようにして、悪い人が勝手に代筆できないように守りを固めよう」ということです。

2. 「重要な操作の前に再ログインを求めて、CSRFの連鎖を断ち切ろう」

意味:
「勝手にお願い(操作)されないように、大事な時だけは『もう一度、本人の顔を見せて(パスワード入力して)』と確認することで、偽の委任状を無効にしよう」ということです。

3. 「掲示板への勝手な書き込みも、CSRFの手口の一つだね」

意味:
「自分が書いていないのに、知らないうちに自分の名前で『変な悪口』が投稿されていたら、それは罠サイトを踏んで勝手に操作させられた可能性があるよ」ということです。

XSSとCSRFの違い

よく似た名前の「Webアプリ二大攻撃」を比較しました。

比較ポイントXSS (クロスサイトスクリプティング)CSRF (シーサーフ)
狙いあなたの 「情報(Cookieなど)」 を盗むあなたの 「権限」 を悪用する
動作サイトに「悪いプログラム」を埋め込むサイトへ「勝手なリクエスト」を送る
たとえ話偽の案内板でお客を騙す偽の委任状で勝手にハンコを押す

「情報を盗む」のがXSS、「勝手にやらせる」のがCSRF、と覚えましょう!

まとめ

この記事のポイントは次のとおりです。

  • CSRFは、ログイン中のユーザーに「勝手な操作」をさせる攻撃
  • パスワード変更や商品購入などが、本人の知らないうちに実行される
  • 「ワンタイムトークン」などの対策で、偽のお願いを防ぐことが大事

今すぐできる確認方法

あなたが「勝手な代筆」をされないために、以下のことを意識しましょう。

  1. こまめにログアウト: 使い終わったサイトは、開きっぱなしにせずログアウトする。扉(権限)を閉めておけば、偽の委任状も通りません。
  2. 怪しいリンクを踏まない: 「偽の委任状」は、怪しいメールやサイトの裏側に隠されています。
  3. ブラウザの更新: 最新のブラウザは、この「勝手な代筆」を防ぐための基本的なガード機能(SameSite属性など)をどんどん強化してくれています。

「CSRF」という言葉を知るだけで、インターネットが「単なる画面」ではなく、あなたの「権限(ハンコ)」を狙う巧妙な罠が潜んでいるかもしれない、少しだけ背筋が伸びる場所に感じられませんか?