クロスサイト スクリプティング (XSS) は、一般的なネットワーク セキュリティの脆弱性であり、その目的は、攻撃された Web ページに悪意のあるスクリプトを挿入することです。これにより、攻撃者はユーザーのブラウザで悪意のあるコードを実行し、ユーザーの機密情報を取得したり、セッションをハイジャックしたり、Web ページのコンテンツを変更したりすることができます。
クロスサイト攻撃の実装は、通常、Web アプリケーションがユーザーが入力したデータを適切にフィルタリングおよび検証できないことに依存します。攻撃者は、ユーザー入力、URL パラメータ、フォーム送信などに悪意のあるスクリプト コードを挿入する可能性があります。ユーザーがページにアクセスするかページを操作すると、攻撃された Web ページは、挿入された悪意のあるスクリプトをユーザーのブラウザにロードし、ユーザーに代わって実行します。
クロスサイト攻撃は、(1) 保存型 XSS、(2) 反射型 XSS、(3) DOM ベースの XSS の 3 つのタイプに分類できます。クロスサイト攻撃は、個人情報の盗難、個人のプライバシー侵害、悪意のある操作などの重大な結果をもたらす可能性があります。クロスサイト攻撃を防ぐために、開発者はユーザー入力の厳密なフィルタリングと検証を実装し、安全なコーディング慣行に従う必要があります。また、ユーザーはブラウザとプラグインを常に最新の状態に保ち、不審なリンクをクリックしたり、信頼できない Web サイトに個人情報を提供したりしないようにする必要があります。
(1) 保存型 XSS: 悪意のあるスクリプトは対象 Web サイトのデータベースに保存されており、他のユーザーが悪意のあるスクリプトを含むページにアクセスすると、データベースからスクリプトが抽出されて実行されます。
ステップ1 | 攻撃者は、コメント ボックスや掲示板など、適切にフィルタリングおよび検証されていないユーザー入力ポイントを含むターゲット Web サイトを見つけます。これらのエントリ ポイントを使用すると、ユーザーはコンテンツを入力し、 Web サイトのデータベースに保存できます。 |
ステップ2 | 攻撃者は、通常はJavaScript コードを挿入することによって、悪意のあるスクリプト コードをエントリの時点に挿入します。悪意のあるスクリプトは通常、ユーザー名、パスワード、Cookie などのユーザーの機密情報を盗むために使用されます。攻撃者は、さまざまな技術や手段を使用して、悪意のあるスクリプトが読み込まれて実行されるときにそれを非表示にすることができます。 |
ステップ3 | 他のユーザーが攻撃された Web ページにアクセスすると、Web ページは悪意のあるスクリプトを含むコンテンツをデータベースから取得し、Web ページに埋め込みます。 |
ステップ4 | ユーザーのブラウザが Web ページを読み込むと、埋め込まれた悪意のあるスクリプトが実行されます。これにより、攻撃者はユーザーとして任意の JavaScript コードを実行し、ユーザーの機密情報を取得したり、Web ページのコンテンツを改ざんしたり、その他の悪意のある操作を実行したりすることが可能になります。 |
(2) 反射 XSS:悪意のあるスクリプトが URL パラメータの一部として使用されている. ユーザーが悪意のあるリンクをクリックするか、攻撃スクリプトを含むフォームを送信すると、サーバーはスクリプトを応答に挿入し、実行のためにユーザーのブラウザに渡します。
ステップ1 | 攻撃者は悪意のあるコードを含む URL を作成し、通常は電子メール、ソーシャル メディア、またはその他の手段を介して、その URL をターゲット ユーザーに送信します。 |
ステップ2 | ターゲット ユーザーが悪意のあるコードを含む URL をクリックすると、その URL がターゲット Web サイトのサーバーに送信されます。 |
ステップ3 | ターゲット Web サイトのサーバーは URL からパラメータを抽出し、そのパラメータを結果の Web ページに (通常は応答の一部として)含めます。 |
ステップ4 | ターゲット ユーザーのブラウザは応答を受信し、ブラウザが Web ページを解析すると、悪意のあるコードが実行されます。これにより、攻撃者がユーザーに代わって任意の JavaScript コードを実行し、ユーザーの機密情報を盗んだり、その他の悪意のあるアクティビティを実行したりすることが可能になります。 |
(3) DOM ベースの XSS: 攻撃スクリプトは、ページの DOM (Document Object Model) 構造を変更することで悪意のある操作の目的を達成します。スクリプトは、サーバーにリクエストを送信せずにクライアント側で実行されます。保存型 XSS や反射型 XSS とは異なり、DOM ベースの XSS 攻撃はサーバーとの対話を通じて実装されず、クライアント側で実行されます。
ステップ1 | 攻撃者は、悪意のある URL を作成するか、悪意のあるスクリプトを含むフォームを送信して、ターゲット ユーザーに送信します。 |
ステップ2 | ターゲット ユーザーは、悪意のある URL をクリックするか、悪意のあるスクリプトを含むフォームを送信します。 |
ステップ3 | ユーザーのブラウザは悪意のあるコンテンツを受信し、Web ページの HTML コードの解析を開始します。 |
ステップ4 | 解析プロセス中に、悪意のあるスクリプトは Web ページの DOM 構造を変更し、ページのコンテンツの変更、ユーザー データの窃取などの悪意のある操作を実行するコードを挿入します。 |
ステップ5 | ユーザーのブラウザがDOM 操作を実行すると、挿入された悪意のあるスクリプトが実行され、攻撃スクリプトが実行されます。 |