Moshiru

会社のセキュリティ教科書 第2部 2-11

XSS・CSRF・クリックジャッキング・ディレクトリトラバーサルとは|診断報告書の読み方と制作会社への頼み方

公開:2026年10月15日/最終更新:同/Moshiru 岡﨑 悠太

こんなときに役立ちます

  • Webサイトの診断結果に「XSS」「CSRF」と書かれていて、意味が分からないとき
  • 制作会社から「対策済みです」と言われたが、何を確かめればいいか分からないとき
  • 取引先のチェックシートで、Webサイトの脆弱性対策を聞かれたとき

読み終えたあと、社内でこう言えます

「診断結果のXSSやCSRFの意味を整理し、制作会社に修正を頼みました」

結論:4つとも、Webサイトの作り方の不備をつかれて、見る人やサーバーが被害を受ける攻撃です。XSSは偽の画面や不正な処理をサイトに紛れ込ませ、CSRFとクリックジャッキングはログイン中の人に意図しない操作をさせ、ディレクトリトラバーサルは公開していないファイルを読まれます。直すのはサイトを作った制作会社やシステム会社です。発注した側の仕事は、報告書の危険度と対象の画面を読み、直す期限と再診断を頼むことです。

XSSは偽の画面を紛れ込ませ、CSRFとクリックジャッキングはログイン中の人に操作させ、ディレクトリトラバーサルは非公開のファイルを読む。発注側は危険度を読み、期限と再診断を頼む

4つの攻撃をひと言で

まず全体をつかみます。IPA(情報処理推進機構)の「安全なウェブサイトの作り方」は、届出が多く影響の大きい脆弱性(ぜいじゃくせい=弱点)を11種類取り上げています。この記事の4つは、すべてその中に入っています。

名前何が起きるか主な直し方
XSS(クロスサイト・スクリプティング)本物のサイトの上に、偽の入力欄や不正な処理を紛れ込ませられる画面に出す文字を、すべて無害な形に置き換えて表示する
CSRF(クロスサイト・リクエスト・フォージェリ)ログイン中の人が罠のページを開くと、設定変更や投稿などを勝手に実行される本人の操作かどうかを、合言葉のような値で確かめる
クリックジャッキング透明に重ねた本物の画面を、別のボタンと思わせて押させる他のサイトの中に自社の画面を表示させない設定を入れる
ディレクトリトラバーサルサーバー内の、公開していないファイルを読まれたり書き換えられたりする外から渡されたファイル名を、そのまま使わない

IPAの四半期報告(2026年第2四半期、2026年7月公表)によると、届出を受け付けたWebサイトの脆弱性の累計のうち、XSSだけで56%を占めます。IPAの届出制度に寄せられた件数の傾向ですが、診断で最もよく見る名前と考えてよいでしょう。

XSS:サイトに「台本」を書き込まれる

XSSは、お知らせの掲示板に、だれかが「この紙を読んだ人は財布を出すこと」と書いた紙を貼るようなものです。サイトが入力された文字を確かめずに画面へ出すと、ブラウザはそれを命令として読んでしまいます。

IPAが挙げる被害は次の3つです。

報告書には「反射型」「格納型」「DOMベース」と書かれることがあります。入力がその場で返される型、データベースに保存されて何度も出る型、ブラウザの中の処理だけで起きる型の違いです。保存される格納型は、ページを見た全員に影響するので重く扱われがちです。

直し方の考え方

IPAは、画面に出すすべての文字を「エスケープ」することを根本の解決としています。エスケープとは、「<」などの記号を、命令ではなくただの文字として表示させる置き換えです。入力のチェックやCookieのHttpOnly属性(スクリプトからCookieを読めなくする設定)は、被害を減らす保険の対策と位置づけられています。

CSRFとクリックジャッキング:ログイン中の人に操作させる

2つとも、攻撃者が自分で操作するのではなく、ログインしている本人のブラウザに操作させる点が同じです。違いは、だまし方にあります。

CSRFクリックジャッキング
だまし方罠のページを開いただけで、裏で送信させる透明に重ねた画面を、マウスで押させる
起きることパスワードや設定の変更、投稿、購入、退会などCSRFとほぼ同じ。マウス操作でできる処理に限られる
根本の直し方本人だけが知る値(トークン)を送らせて確かめる。重要な処理の直前にパスワードを再入力させるX-Frame-Optionsや、CSPのframe-ancestorsで、他サイトの枠の中に表示させない

IPAは、CSRFに特に注意が必要なサイトとして、決済を扱うサイトや管理画面、会員専用サイトを挙げています。お問い合わせフォームしかない会社案内のサイトより、会員ページやネットショップ、予約システムで重くなります。

Cookieに付けるSameSite属性(ほかのサイトから来た送信にCookieを付けない設定)も、CSRFをある程度防ぎます。ただし、これだけに頼らず、トークンの確認と組み合わせるのが基本です。クリックジャッキング対策のヘッダは、外から見て設定の有無が分かります。そのため、自動のスキャンで「未設定」と出やすい項目です。

ディレクトリトラバーサル:見せていないファイルを読まれる

画面に出すファイルの名前を、URLなど外から受け取る作りのサイトがあります。そこに「上の階層へ戻る」意味の記号を混ぜられると、公開用の棚の外にある書類まで取り出されます。倉庫の受付で、伝票の棚番号を書き換えられて、社外秘の棚の箱を渡してしまうイメージです。

IPAは、設定ファイルやデータ、プログラムの中身を見られたり、書き換え・削除されたりするおそれがあるとしています。直し方は次のとおりです。

  1. 外から受け取った値で、サーバーのファイル名を直接指定する作りを避ける(根本の解決)
  2. 使う場合は、決まったフォルダだけを開き、受け取った名前からフォルダ部分を取り除く(根本の解決)
  3. サーバーのファイルの権限を正しく絞る(保険の対策)

この種類は、データベースのパスワードが入った設定ファイルなどが読まれると、被害が一気に広がります。SQLインジェクションなどほかの攻撃は、教科書の2-10で扱います。

診断報告書はこう読む

報告書は、1件ごとに「項目名・危険度・対象の画面・再現の手順・直し方」が並ぶ形が多いです。発注した側が読むのは、次の3点です。

  1. 危険度:「緊急・重要・警告・注意」や「高・中・低」で書かれます。CVSS(脆弱性の深刻さを点数にする国際的な物差し)を使う報告書では、9.0以上が緊急、7.0〜8.9が重要です。
  2. 対象の画面:ログイン後の画面か、個人情報を扱う画面か。同じXSSでも、重さが変わります。
  3. 直し方の主語:制作会社がプログラムを直すのか、サーバーの設定で済むのか。費用と期限の見通しが変わります。

たとえば、社員30人のリフォーム会社(架空)が、見積りの会員ページを持っているとします。報告書に次の3件が出ました。

報告書の項目読み方
格納型XSS(会員の問い合わせ履歴) 危険度:高最優先。会員と社員が開く画面なので、偽の画面やなりすましにつながる。すぐ直してもらう
CSRF(パスワード変更) 危険度:中会員のアカウントを乗っ取られる入口。次の修正の区切りまでに直す
クリックジャッキング対策ヘッダ未設定 危険度:低サーバーの設定で済むことが多い。ほかの修正と一緒に入れてもらう

危険度の付け方は、診断会社ごとに少しずつ違います。順番に迷ったら、「ログイン後の画面」「個人情報やお金を扱う画面」を先にします。スキャンと人の手による診断の違いは、脆弱性スキャンと脆弱性診断の違いにまとめています。

制作会社に何を頼むか

IPAの「企業ウェブサイトのための脆弱性対応ガイド」(2021年3月)は、委託先とのあいだでセキュリティの要件と作業範囲を文書で決めておくことを勧めています。報告書が出たら、次の内容を文面で頼みます。

件名:脆弱性診断の結果への対応のお願い(〇〇サイト)

いつもお世話になっております。
添付の診断報告書で、次の項目が指摘されました。

・格納型XSS(会員の問い合わせ履歴) 危険度:高
・CSRF(パスワード変更) 危険度:中
・クリックジャッキング対策ヘッダ未設定 危険度:低

お手数ですが、次の4点をご回答ください。
1. 各項目の直し方と、作業にかかる日数・費用
2. 危険度「高」の項目を、いつまでに直せるか
3. 同じ作りの画面がほかにもないか(指摘の画面だけでなく)
4. 修正後に、同じ項目の再診断を受けてよいか

保守契約の範囲に入るかどうかも、あわせてお知らせください。

3番が大切です。診断は代表の画面だけを調べることが多く、同じ作りの別の画面に同じ弱点が残りがちです。IPAの「ウェブ健康診断仕様」も、脆弱性が見つからなかったことは安全の宣言にならないとしています。

チェックシートではこう聞かれる

よくある設問答え方の例
公開しているWebアプリケーションに、脆弱性診断を実施していますか。はい。2026年〇月に外部の診断を受け、危険度「高」の指摘はすべて修正し、再診断で確認しました。
Webサイトの開発を委託する際、セキュリティの要件を定めていますか。はい。IPA「安全なウェブサイトの作り方」に沿った実装を、発注書の要件に入れています。
指摘された脆弱性を、期限を決めて修正していますか。はい。危険度ごとに修正の期限を決め、委託先の対応を記録しています。

「いいえ」や「一部」の答え方は、「脆弱性診断を実施していますか」の回答例にあります。

試験ではここが問われる

SG・支援士・Security+ 2・CISSP 8

  • XSSの根本の対策は、出力するときのエスケープ。入力のチェックは保険の対策にとどまる。
  • CSRFはログイン中の利用者の権限を使って、本人の意図しない送信をさせる。対策はトークンの確認、重要な処理の前のパスワード再入力。
  • クリックジャッキングの対策はX-Frame-Options(DENY・SAMEORIGIN)やCSPのframe-ancestors。
  • ディレクトリトラバーサルは、外部からのファイル名の指定で非公開のファイルにアクセスされる。ファイル名だけを取り出して固定のフォルダと組み合わせる。
  • HttpOnly属性はスクリプトからCookieを読めなくする。XSSの被害を減らすが、XSSそのものは防がない。

確認問題

問1 XSSの根本の対策として、最も適切なものはどれですか。

  1. ア Cookieに有効期限を付ける
  2. イ 画面に出力する文字を、すべてエスケープしてから表示する
  3. ウ X-Frame-Optionsヘッダを出力する
  4. エ 通信をHTTPSで暗号化する
答えと解説
正解:イ XSSは、入力された文字が命令として表示されることで起きるので、出力時のエスケープが根本の対策です。ウはクリックジャッキング、エは盗聴への対策で、XSSは防げません。アは被害の期間を縮めるだけです。

問2 社員20人の旅行会社(架空)の予約サイトで、会員がログインしたまま別のサイトを開いたところ、知らないうちに登録メールアドレスが変更されていました。会員はそのサイトで何もクリックしていません。最も疑わしい脆弱性はどれですか。

  1. ア ディレクトリトラバーサル
  2. イ クリックジャッキング
  3. ウ CSRF
  4. エ SQLインジェクション
答えと解説
正解:ウ ログイン中の本人のブラウザから、罠のページ経由で設定変更を送らせるのがCSRFです。イもログイン中の人に操作させますが、本人にクリックさせる必要があります。アとエはサーバー側の情報を狙う攻撃で、この場面とは合いません。

問3 CookieにHttpOnly属性を付けたときの効果として、正しいものはどれですか。

  1. ア ページ内のスクリプトから、そのCookieを読めなくなる
  2. イ ほかのサイトからの送信に、そのCookieが付かなくなる
  3. ウ HTTPSの通信のときだけ、そのCookieが送られる
  4. エ XSSの脆弱性そのものがなくなる
答えと解説
正解:ア HttpOnlyはスクリプトからのアクセスを止め、XSSによるCookieの盗み出しを減らします。イはSameSite属性、ウはSecure属性の説明です。XSS自体は残るので、エは誤りです。

よくある質問

WordPressで作ったサイトでも、XSSやCSRFは出ますか?
出ます。本体のほか、プラグインやテーマの弱点として公表されることもあります。更新を止めているサイトほど残りやすいので、まずは本体・テーマ・プラグインの更新から始めます。手順はWordPressの点検チェックリストにあります。
無料のスキャンで「問題なし」なら、安心してよいですか?
外から見える設定に大きな問題がない、という意味にとどまります。XSSやCSRFは、ログイン後の画面や入力の処理を人の手で確かめないと見つからないことがあります。会員ページや決済がある場合は、ログイン後まで含めた診断を検討してください。
制作会社と連絡が取れません。どうすればいいですか?
まず、サイトの管理画面とサーバーの契約者が自社かどうかを確かめます。自社でなければ、移管の手続きが先です。危険度「高」の指摘があるなら、該当の機能を一時的に止めることも選べます。

外から見える状態を、無料の結果で報告する

Moshiruは、打合せなしでテキストだけでお受けします。無料スキャンでは、許可をいただいたサイトを外から見える範囲で1回だけ調べ、見つかった件数と重要度をお返しします。WordPressのサイトなら、更新と管理画面の保護までまとめて行う点検パックもあります。

無料スキャンを申し込む対象のURLと許可だけWordPress点検パックを見る4万円・5営業日メニューにないことを頼む文面で合意するまで料金はかかりません

参考にした資料

  1. IPA「安全なウェブサイトの作り方」改訂第7版(2015年3月、2021年3月第4刷)
  2. IPA「安全なウェブサイトの作り方 1.5 クロスサイト・スクリプティング」
  3. IPA「安全なウェブサイトの作り方 1.6 CSRF(クロスサイト・リクエスト・フォージェリ)」
  4. IPA「安全なウェブサイトの作り方 1.9 クリックジャッキング」
  5. IPA「安全なウェブサイトの作り方 1.3 パス名パラメータの未チェック/ディレクトリ・トラバーサル」
  6. IPA「ソフトウェア等の脆弱性関連情報に関する届出状況[2026年第2四半期(4月~6月)]」(2026年7月)
  7. IPA「安全なウェブサイト運営にむけて ~企業ウェブサイトのための脆弱性対応ガイド~」(2021年3月)
  8. IPA「共通脆弱性評価システムCVSS v3概説」
  9. OWASP「OWASP Top 10:2025」
  10. OWASP「Types of XSS」
  11. OWASP Cheat Sheet Series「Clickjacking Defense Cheat Sheet」
  12. MDN Web Docs「Set-Cookie」
  13. MDN Web Docs「CSP: frame-ancestors」