San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
Attacks

反射型XSS攻撃とは? 対策

はじめに

反射型XSSは、非永続型攻撃とも呼ばれ、最も基本的なクロスサイトスクリプティング攻撃の一つです。この記事では、反射型XSS攻撃がどのようなものか、その代表例と予防のベストプラクティスについて解説します。

反射型XSS攻撃とは? 対策

クロスサイトスクリプティングとは何か?

XSSは、ウェブアプリの欠陥の一つで、攻撃者が外部サイトの内容にコード(通常はHTMLやJavaScript)を混入できる脆弱性です。被害者が汚染されたページを訪れると、そのコードが被害者のアプリ内で実行され、攻撃者は同一生成ポリシーを回避して個人情報を取得する可能性があります。

XSS攻撃の種類

  1. 反射型XSS — 悪意あるコンテンツがサイトの出力やレスポンスに反映される場合、これを反射型XSS攻撃と呼びます。
  2. 格納型XSS — 悪意ある情報がデータベースに恒久的に保存され、被害者はアクセスして実行するまで攻撃に気付かないものです。
  3. DOM XSS — 被害者のアプリ内でDOMの「環境」を書き換えることで攻撃者のペイロードが実行され、クライアント側のコードが想定外の動作をするDOMベースのXSSです。

反射型XSS攻撃とは?

反射型(非永続型)XSS攻撃は、脆弱なウェブアプリから送信されたリクエストに悪意あるペイロードが組み込まれ、サーバにそのまま反映されることでHTTPレスポンスに含まれる場合に発生します。攻撃者はフィッシングなどのソーシャルエンジニアリング手法で被害者を騙し、ウェブサーバへのリクエストに悪意ある内容を盛り込みます。被害者のアプリは、このHTTPレスポンス内の悪意ある内容を実行します。

反射型XSS攻撃の影響は?

反射型XSS攻撃は一回限りの性質があり、各被害者が悪意あるペイロードを含むリクエストを送信する必要があります。そのため、攻撃者はできるだけ多くのクライアントを騙そうと試みます。多くのクライアントがクリックしやすい悪質なメール、SNS投稿、エラーメッセージ、または検索結果ページなどを狙うことが一般的です。反射型XSSは、攻撃者が脆弱なウェブアプリに恒久的な悪質スクリプトを埋め込む必要がないため、最もよく知られるXSS攻撃の一種です。

Reflected XSS attack in action

反射型XSS攻撃の例

ウェブサーバから反射されるスクリプト(エラーメッセージ、検索項目、その他レスポンス内の情報など)に悪意ある内容が含まれる場合、これを反射型クロスサイトスクリプティングと呼びます。反射型攻撃はメールやフィッシングなど、別の手段で被害者に送られ、被害者が悪意ある内容やリンクをクリックすることでアプリ内で実行されます。検索フィールドは反射型XSSの代表例です。

反射型XSS攻撃を成功させるため、攻撃者はクライアントの入力がそのままレスポンスの生成に使用される箇所を探します。これは通常、スクリプトを含んではいけないimgタグやonload、onmouseoverなどの属性が使われる場合に見られます。これらの要素には、入力検証や出力エンコードなどの対策が十分に施されていないことが多いです。反射型XSSの例を以下に示します。

例 1

検索文字列をクエリパラメータから取得するウェブアプリを考えてみます。

http ://target.com/aform.html?search=Gaurav

HTMLページ上で、サーバはクライアントから送信された検索値を表示します。PHPを用いてURLから値を抽出し、この例ではHTMLを生成しています。

<?php echo 'You Searched: ' . $_GET["search"]; ?>

クライアントの入力がそのままURLを通じて渡され、入力検証や出力エンコードが行われていない状況をご覧ください。被害者がこのURLをクリックすると、悪意ある内容が実行され、情報が攻撃者に送信される可能性があります。

http://target.com/aform.html?search=<script>alert('XSS by Gaurav');</script>

例 2

アプリが専用ページでエラーメッセージを表示する場合、反射型XSSが発生することがあります。基本的に、このページはパラメータとして受け取ったメッセージをそのままレスポンスの一部として表示します。

下記のURLはエラーメッセージを表示する例です。

http ://target.com/blunder/5/Error.ashx?message=Sorry%2c+an+error+occurred

返されたページのHTMLソースを見ると、アプリがURLのmessageパラメータの値をそのまま表示していることが分かります。

<p>Sorry, a blunder occurred.</p>

エラーメッセージが検証されていないため、攻撃者は悪意ある内容を容易に追加し、ポップアップを発生させる可能性があります。

http://target.com/blunder/5/Error.ashx?message=<script>alert("XSS by GAURAV")</script>

このリンクをクリックすると、元のメッセージではなく、以下のHTMLレスポンスが表示されます。

<p><script>alert("XSS by GAURAV");</script></p>

反射型XSS攻撃の防止と緩和策

反射型XSSを防ぐ方法についてお悩みの場合、以下にいくつかの対策や緩和策をご紹介します。

まず第一に、クライアント側では不審なリンクをクリックしないことが最も重要です。不審なリンクは、以下のような場所に見受けられます:

  • 不審な送信者のメッセージ
  • サイトのコメント欄
  • 不審なクライアントのソーシャルメディアフィード

しかし最終的には、サイト管理者が利用者を守る責任があります。

また、ウェブアプリのファイアウォール(WAF)は反射型XSS攻撃を防ぐ上で重要な役割を果たします。WAFは、入力検証が不十分な場合でも、特定のセキュリティルールや各種ヒューリスティックスを活用して不正なリクエストを阻止します。これには、反射型XSS攻撃を試みるリクエストも含まれますが、これだけに限定されるものではありません。

格納型XSS攻撃がサイトへの悪意あるリクエストを阻止するのに対し、反射型XSS攻撃はクライアントのリクエストに影響を及ぼします。これは、他のサイト利用者に被害が及ばないよう守るための措置です。

Wallarmはどのようにしてこの攻撃を防ぐのか?

WallarmのクラウドWAFは署名検出を利用して反射型XSSを防ぎます。また、Wallarmネットワーク全体から攻撃情報を収集し統合するオープンサポート技術により、全てのクライアントを守る手助けを行っています。

さらに、高度なセキュリティヒューリスティックス、例えばIPの悪評をチェックして常習的な攻撃者やボットネットを追跡することで、GoTestWAFはゼロデイ脅威に迅速に対応し、クライアント全体を新たなリスクから守ります。最後に、WallarmのAPIセキュリティプラットフォームは、製品全体を守る堅実な対策となります。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック