導入
クロスサイト スクリプティング(略称XSS ) は、Web サイトのセキュリティ脆弱性の一種であり、通常は Web アプリケーションに見られ、攻撃者がこれを使用してWeb サイトをページの作成者が望むものとは異なる動作 (サイトへのリダイレクト、情報窃盗など)。 CSS (スタイル シート) と混同しないように XSS と省略されます。X は英語の「 cross 」の一般的な略語です。
クロスサイト スクリプティングという用語は、この種の脆弱性を正確に説明するものではありません。 XSS の先駆者であるマーク・スレムコ氏は次のように述べています。
「問題は「スクリプト」だけではなく、複数のサイト間に必ずしも何かがあるとは限りません。では、なぜこの名前なのでしょうか?実際、この名前は、問題があまり理解されておらず、行き詰まっていたときに付けられました。信じてください、私たちには、より良い名前を考えるよりも、もっと重要なやるべきことがあったのです。 »
原理は、たとえばフォーラムにメッセージを投稿することによって、また URL パラメータなどを通じて任意のデータをWeb サイトに挿入することです。このデータが検証されずにブラウザに送信されたWeb ページ(URL パラメーター、投稿されたメッセージなどによって) としてそのまま到着した場合、欠陥が存在します。スクリプト言語 (ほとんどの場合) で悪意のあるコードを実行するために使用される可能性があります。このページを閲覧しているWeb ブラウザによって、多くの場合JavaScript ) が使用されます。
XSS 脆弱性の存在は、たとえばフォームフィールドまたは URL に Javascript スクリプトを入力することで検出できます。
ダイアログボックスが表示される場合は、 Web アプリケーションが XSS 攻撃の影響を受けやすいと結論付けることができます。

リスク
XSS タイプの脆弱性が悪用されると、侵入者は次の操作を実行できるようになります。
- ユーザーのリダイレクト (場合によっては透過的)。
- セッションや Cookie などの情報の盗難。
- 被害者の知らないうちに、被害者の身元を偽って、脆弱なサイトでの行為 (メッセージの送信、データの削除など)
- ページのクラッシュ(アラートの無限ループなど)、ブラウザのクラッシュもよくあります。
XSS タイプの欠陥は、2005 年のMySpaceでの Samyウイルスや、 Yahoo!でのYamannerウイルスの蔓延の根源となっています。 2006年のメール。

抜け穴を避ける
XSS を回避するには、いくつかの手法があります。
- アプリケーションによって生成された HTML コードをブラウザに送信する前に体系的に再処理します。
- 「<」および「>」文字を使用して表示または保存されるフィルター変数 (CGI では PHP と同様)。より一般的には、外部からの文字列を含む変数には、たとえば「us」(ユーザー文字列) というプレフィックスを付けた名前を付けて、他の変数と区別し、対応する値を実行可能文字列(特に SQL!) 内で使用しないでください。事前のフィルタリング。
- PHP の場合:
- 「<」と「>」をフィルタリングするhtmlspecialchars() 関数を使用します (上記を参照)。
- タグを削除するstrip_tags()を使用します。
- HTMLタグを正しく使用する(不十分)。
ユーザー (発行システム) からのタグ付きコンテンツを効率的にフィルターできるライブラリがあります。
さらに、アプリケーションファイアウォールなどの専用ネットワーク機器を利用してXSS型脆弱性を防御することも可能です。これらにより、疑わしいリクエストを検出するためにすべてのHTTPフローをフィルタリングできます。

