インターネットの普及に伴い、私たちの生活は大きく変わりました。情報の取得・コミュニケーション・ショッピングなど、多くの活動がオンライン上で行われるようになった一方で、その便利さの裏にはさまざまなセキュリティリスクが潜んでいます。
その中でもCSRF攻撃は、ユーザー本人が気づかないまま「ログイン中の権限」を悪用され、意図しない操作を実行させられる可能性がある点で注意が必要です。本記事では、CSRFの仕組み、起こりやすいシナリオ、そして実務で使える対策の考え方を整理します。

CSRF(Cross-Site Request Forgery:クロスサイトリクエストフォージェリ)攻撃とは、ユーザーが意図しない操作(リクエスト)を第三者のページを経由して、正規サイトに送信させる攻撃手法です。ポイントは、攻撃対象のサイトに「ログイン済み」のユーザーが、攻撃者の用意したページ(罠ページ)を開くことで、ユーザーの名義で処理が進んでしまう可能性がある点です。
たとえば、ログイン中に「メールアドレス変更」「送金」「パスワード変更」「配送先住所の変更」「権限変更」などの操作が、本人の意思とは無関係に実行されると、被害は金銭・信用・アカウント支配にまで広がります。
ウェブサイトやオンラインサービスを利用する際、私たちは「自分がクリックした操作だけが実行される」と考えがちです。しかしブラウザは、ユーザーの利便性のために、ログイン状態を維持する仕組み(セッション)を自動的に扱います。CSRFは、その便利さが裏目に出る典型例です。
CSRFは、第三者のウェブサイトやメール、SNS投稿などを踏み台にして、ユーザーが意図しないリクエストを送信させる攻撃です。攻撃者が狙うのは、ユーザーのパスワードそのものではなく、ログイン済みのセッション(「本人として操作できる状態」)です。
CSRFが成立する背景には、主に以下の2点があります。
具体的には、ユーザーが対象サイトにログインしている状態で、攻撃者の罠ページを開きます。罠ページは、画像表示・自動送信フォーム・スクリプトなどを使って、対象サイトに対するリクエストを発生させます。このときブラウザは、対象サイト宛の通信であれば、ユーザーのCookie(セッション情報)を付けて送ってしまうため、サーバ側は「ログイン済みユーザーからの正規リクエスト」として処理してしまう可能性があります。
CSRFは「いつでも」成立するわけではありません。典型的には次の条件が重なると危険です。
CSRFの厄介さは、ユーザーが攻撃に参加している自覚がほとんどない点にあります。操作画面を開いたわけでも、確認ボタンを押したわけでもないのに、裏側で処理が完了してしまうケースがあります。
さらに、被害が「アカウント情報の変更」「送金」「権限付与」など不可逆・重大な操作に及ぶと、ログを確認するまで気づけないこともあります。つまりCSRFは、攻撃の成功後に発見されるまでの時間が長くなりやすいという意味でも危険です。
CSRFの理屈が分かっても、「どの操作が狙われるのか」を具体的に想像できないと対策は定着しません。ここでは典型的なシナリオをいくつか見ていきます。

例として、オンラインショッピングサイトを考えます。ログイン後の状態で、攻撃者のページにアクセスすると、背後で「カートへ追加」「配送先の変更」「注文確定」などのリクエストが送信される可能性があります。ユーザーはただページを開いただけでも、セッションが有効であれば、サーバが正規操作として扱ってしまう場合があります。
CSRF単体でも成立しますが、実務上は「罠ページへ誘導する」工程でソーシャルエンジニアリングが使われがちです。例えば、偽のプロモーションメール、興味を引くニュース見出し、SNSの投稿、社内チャットのなりすましリンクなどでクリックを誘います。誘導が成立すると、ユーザーは「リンクを開いただけ」で攻撃に巻き込まれる可能性があります。
CSRFは「ログイン済みの権限」を利用するため、被害はそのサービスの権限範囲に依存します。特に、管理者権限・経理権限などの強い権限を持つアカウントが狙われると、影響が組織全体に及びます。
また、攻撃者が別の脆弱性(例:XSS)と組み合わせると、ユーザー誘導がより確実になったり、実行できる操作が増えたりするため、被害が拡大しやすくなります。
CSRFは「仕組み上起きうる」攻撃であるため、気合や注意だけでは防ぎきれません。基本は、サーバ側で“本人の意思”を確認できる仕組みを入れることです。ここでは、ウェブサイト側(提供側)とエンドユーザー側(利用側)に分けて整理します。
ウェブサイトを運営する側は、状態を変更する処理(更新・削除・送金・設定変更など)に対して、CSRF対策を組み込むことが重要です。代表的な手段を紹介します。
フォーム送信や状態変更のリクエストに対して、一意のトークン(推測困難な値)を付与し、サーバ側で照合する方法です。攻撃者のページから勝手に送られたリクエストには正しいトークンを付けられないため、不正リクエストを排除できます。
実装では「セッションに紐づくトークンを発行し、送信ごとに検証する」「使い回しを避ける」「重要操作は再認証や確認を要求する」など、運用面も含めて設計します。
CookieのSameSite属性を適切に設定することで、第三者サイトからのリクエストにCookieが付与されにくくなり、CSRFリスクを下げられます。特に、可能な範囲でSameSite=Lax/Strictを検討し、例外が必要なケース(外部連携や決済など)は、設計意図を明確にしたうえで調整します。
リクエスト元の情報(RefererやOrigin)を検証し、想定外の外部サイトからのリクエストを拒否する方法です。ただし、ブラウザ設定やプロキシ、プライバシー保護の影響で情報が欠落する場合もあるため、これ単体に依存せず補助的に使うのが現実的です。
CSRFは主にサーバ側の設計で防ぐべきですが、ユーザー側の習慣でリスクを下げられる場面もあります。
重要なサービス(金融、管理画面、業務SaaSなど)を使い終えたらログアウトする、共有端末でログイン状態を残さない、といった基本動作は有効です。セッションが生きていなければCSRFの成立条件が崩れます。
メールやSNS、チャットに届いたリンクは、送信元が正規でも乗っ取りの可能性があります。特に「急かす」「得をする」「警告を装う」文面は誘導の典型です。リンク先を開く前に、URLや文脈を確認する習慣が役立ちます。
CSRFそのものは仕組みの問題ですが、関連する挙動(Cookie制御、セキュリティ機能、サイト分離など)はブラウザの更新で改善されることがあります。普段使いの環境は継続的にアップデートしておくのが安全です。
CSRFだけを対策しても、別の入口から同様の被害が起こることがあります。関連性が高く、混同されやすい代表例を整理します。
XSSは、攻撃者がウェブページに悪意のあるスクリプトを混入させ、ユーザーのブラウザ上で不正な処理を実行させる攻撃です。CSRFは「ユーザーのセッションを使ってサーバへ不正リクエストを送らせる」攻撃であり、狙いどころが異なります。
ただし、XSSがあると「ユーザーを罠ページへ誘導する」「CSRFトークンを盗む」などが現実味を帯び、結果としてCSRF被害が拡大しやすくなります。つまり、実務ではどちらも同時に潰す視点が重要です。
SQLインジェクションは、入力値を通じて不正なSQLを実行し、データベースを読み書きする攻撃です。CSRFが「正規ユーザーの権限で処理を実行させる」攻撃であるのに対し、SQLインジェクションは「アプリの入力処理不備を突いて裏側のDBを直接操作する」攻撃です。
攻撃は別物ですが、どちらも「想定外の操作が通る」ことが根本原因になりやすいため、入力検証・権限設計・ログ監視などの基本に立ち返ることが有効です。
CSRF攻撃は、ユーザーがログインしている状態(セッション)を悪用し、本人が意図しない操作を実行させる脅威です。被害は金銭・設定変更・権限操作などに及び得るため、ウェブサービスにとって無視できません。
CSRFの本質は「リクエストが本人の意思かどうか」をサーバ側が判断できない点にあります。したがって、対策の中心は、CSRFトークンやSameSite属性などを用いて、不正リクエストを成立させない仕組みを実装することです。
ユーザー側でも、重要サービスのログイン状態を長く残さない、不審なリンクを踏まない、環境を最新に保つといった基本動作で、成立条件を減らせます。サービス提供側・利用側の双方が前提を理解し、実装と運用を積み重ねることが、CSRFを現実的に抑え込む近道です。
ログイン中のユーザーの権限を悪用し、意図しない操作を正規サイトに実行させる攻撃です。
ブラウザが同一サイト宛のリクエストにCookieを自動付与し、サーバが意思確認できない場合があるためです。
送金や購入、メールアドレス変更、権限付与などの状態変更が本人の意思なく実行されることです。
リクエストが正規画面から送られたことを確認するための推測困難な値で、サーバ側で照合します。
有効です。第三者サイトからのリクエストにCookieが付与されにくくなり、リスクを下げられます。
十分ではありません。欠落する場合があるため、トークン等と組み合わせて使います。
リンクを開くだけで実行されやすく、意図しない操作が起きやすいためです。
XSSはブラウザ上で不正スクリプトを動かす攻撃で、CSRFは正規サイトへの不正リクエストを実行させる攻撃です。
重要サービスは使い終えたらログアウトし、不審なリンクを避け、環境を最新に保つことです。
送金・課金・認証設定・権限変更など、被害が大きい操作です。