(57)【特許請求の範囲】
【請求項１】
クロスサイトスクリプティング（ＸＳＳ）攻撃を処理するコンピュータ実装システムであって、
クライアントとサーバとの間のトラフィックを処理する通信コンポーネントと、
リクエストトラフィックの疑わしい部分を折り返されたウェブページコンテンツとマッチングしてレスポンストラフィック内にＸＳＳ攻撃が存在するかを判定することにより前記トラフィックからの折り返し型ＸＳＳ攻撃をフィルタリングするフィルタコンポーネントと、
を含み、
前記フィルタコンポーネントは、前記リクエストトラフィックに対してヒューリスティクスを処理して１つまたは複数のシグネチャを生成し、さらに前記１つまたは複数のシグネチャを前記レスポンストラフィックに対して処理して前記ＸＳＳ攻撃をフィルタリングし、
前記サーバが、特定のＨＴＴＰレスポンスヘッダに基づいて特定のレスポンスに対して前記フィルタコンポーネントを無効化することを特徴とするシステム。
【請求項２】
クロスサイトスクリプティング（ＸＳＳ）攻撃を処理するコンピュータ実装システムであって、
クライアントとサーバとの間のトラフィックを処理する通信コンポーネントと、
リクエストトラフィックの疑わしい部分を折り返されたウェブページコンテンツとマッチングしてレスポンストラフィック内にＸＳＳ攻撃が存在するかを判定することにより前記トラフィックからの折り返し型ＸＳＳ攻撃をフィルタリングするフィルタコンポーネントと、
を含み、
前記フィルタコンポーネントは、前記リクエストトラフィックに対してヒューリスティクスを処理して１つまたは複数のシグネチャを生成し、さらに前記１つまたは複数のシグネチャを前記レスポンストラフィックに対して処理して前記ＸＳＳ攻撃をフィルタリングし、
前記フィルタコンポーネントが、前記サーバから前記クライアントへのレスポンスにおける置換に関する１または複数の無効文字を選択して、前記ＸＳＳ攻撃の存在を判定することを特徴とするシステム。
【請求項３】
クロスサイトスクリプティング（ＸＳＳ）攻撃を処理するコンピュータ実装システムであって、
クライアントとサーバとの間のトラフィックを処理する通信コンポーネントと、
リクエストトラフィックの疑わしい部分を折り返されたウェブページコンテンツとマッチングしてレスポンストラフィック内にＸＳＳ攻撃が存在するかを判定することにより前記トラフィックからの折り返し型ＸＳＳ攻撃をフィルタリングするフィルタコンポーネントと、
を含み、
前記フィルタコンポーネントが前記サーバから受信されたトラフィックに対して１または複数のシグネチャを処理して前記ＸＳＳ攻撃の存在を判定し、前記攻撃がＭＩＭＥ型を有する前記受信されたトラフィックのコンテンツに基づいていることを特徴とするシステム。
【請求項４】
クロスサイトスクリプティング（ＸＳＳ）攻撃を処理するコンピュータ実装システムであって、
クライアントとサーバとの間のトラフィックを処理する通信コンポーネントと、
リクエストトラフィックの疑わしい部分を折り返されたウェブページコンテンツとマッチングしてレスポンストラフィック内にＸＳＳ攻撃が存在するかを判定することにより前記トラフィックからの折り返し型ＸＳＳ攻撃をフィルタリングするフィルタコンポーネントと、
を含み、
前記フィルタコンポーネントがスクリプトエンジンへの全ての入力を処理し、スクリプトブロックが認識された場合に、前記フィルタコンポーネントがリクエストに関するオリジナルの送信トラフィックをスキャンして実行される直前のスクリプトを発見し、前記スクリプトと前記スクリプトブロックとのマッチングに基づいて前記スクリプトブロックをフィルタリングすることを特徴とするシステム。
【請求項５】
前記通信コンポーネントが前記サーバにＨＴＴＰリクエストを送信する前記クライアントのブラウザであり、前記フィルタコンポーネントが前記クライアントにおいて動作して前記ＸＳＳ攻撃をフィルタリングすることを特徴とする請求項１乃至４いずれか一項に記載のシステム。
【請求項６】
前記トラフィックがＨＴＴＰリクエスト／レスポンストラフィックであり、前記フィルタコンポーネントが前記リクエストトラフィックを解析して前記レスポンストラフィック内の前記ＸＳＳ攻撃を確認することを特徴とする請求項１乃至４いずれか一項に記載のシステム。
【請求項７】
前記通信コンポーネントが前記ＨＴＴＰリクエスト／レスポンストラフィックを処理する前記サーバにおけるファイアウォールアプリケーションであり、前記フィルタコンポーネントが前記ファイアウォールアプリケーションの一部として動作して前記ＸＳＳ攻撃をフィルタリングすることを特徴とする請求項６に記載のシステム。
【請求項８】
前記通信コンポーネントが前記サーバにおけるプロキシファイアウォールアプリケーションであり、前記サーバは前記ＨＴＴＰリクエスト／レスポンストラフィックを処理するプロキシサーバまたはリバースプロキシサーバであり、前記フィルタコンポーネントが前記プロキシファイアウォールアプリケーションの一部として動作して前記ＸＳＳ攻撃をフィルタリングすることを特徴とする請求項６に記載のシステム。
【請求項９】
折り返し型のＸＳＳ攻撃をフィルタリングする方法であって、
サーバにリクエストを送信するステップと、
ヒューリスティクスを使用して前記リクエストを処理してシグネチャが生成されたかを判定するステップと、
前記サーバからレスポンスを受信するステップと、
１つまたは複数のシグネチャを生成することおよび前記レスポンスの疑わしい部分を前記１つまたは複数のシグネチャとマッチングして前記レスポンス内にＸＳＳ攻撃が存在するかを判定することに少なくとも部分的に基づいて、折り返し型のＸＳＳ攻撃として前記レスポンスをフィルタリングするステップと、
非ＨＴＭＬ  ＭＩＭＥ型及び同一サイトリクエストをフィルタ処理及びシグネチャ生成無しに通過させるステップと、
を含むことを特徴とするシステム。
【請求項１０】
折り返し型のＸＳＳ攻撃をフィルタリングする方法であって、
サーバにリクエストを送信するステップと、
ヒューリスティクスを使用して前記リクエストを処理してシグネチャが生成されたかを判定するステップと、
前記サーバからレスポンスを受信するステップと、
１つまたは複数のシグネチャを生成することおよび前記レスポンスの疑わしい部分を前記１つまたは複数のシグネチャとマッチングして前記レスポンス内にＸＳＳ攻撃が存在するかを判定することに少なくとも部分的に基づいて、折り返し型のＸＳＳ攻撃として前記レスポンスをフィルタリングするステップと、
リファラヘッダの完全に記述したドメイン名と取得されたＵＲＬの完全に記述したドメイン名とを比較することによって前記リクエストのリファラヘッダをチェックするステップと、マッチングしなかった場合またはリファラヘッダが存在しないかもしくは空の場合に前記リクエストをフィルタリングするステップと、
を含むことを特徴とするシステム。
【請求項１１】
折り返し型のＸＳＳ攻撃をフィルタリングする方法であって、
サーバにリクエストを送信するステップと、
ヒューリスティクスを使用して前記リクエストを処理してシグネチャが生成されたかを判定するステップと、
前記サーバからレスポンスを受信するステップと、
１つまたは複数のシグネチャを生成することおよび前記レスポンスの疑わしい部分を前記１つまたは複数のシグネチャとマッチングして前記レスポンス内にＸＳＳ攻撃が存在するかを判定することに少なくとも部分的に基づいて、折り返し型のＸＳＳ攻撃として前記レスポンスをフィルタリングするステップと、
１または複数の無効文字を選択して前記１または複数の無効文字を前記ヒューリスティクスに挿入して、前記レスポンスの処理において変更に関する前記リクエスト内の疑わしい文字を認識するステップと、
を含むことを特徴とする方法。
【請求項１２】
前記リクエストの疑わしい部分を折り返されたウェブページコンテンツとマッチングして前記レスポンス内にＸＳＳ攻撃が存在するかを判定するステップをさらに含むことを特徴とする請求項９乃至１１いずれか一項に記載の方法。
【請求項１３】
前記リクエストが１または複数のＵＲＬまたはＰＯＳＴデータを含むことを特徴とする請求項９乃至１１いずれか一項に記載の方法。
【請求項１４】
正規表現を使用して前記リクエストの前記１または複数のＵＲＬまたはＰＯＳＴデータ内の文字の特定のパターンを認識するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ヒューリスティクスによって定義された前記リクエスト内の文字の特定のパターンのマッチングに基づいてヒューリスティクスから前記シグネチャを生成するステップをさらに含むことを特徴とする請求項９乃至１１いずれか一項に記載の方法。
【請求項１６】
前記シグネチャを使用して前記レスポンスをスキャンするステップと、前記シグネチャに基づいて無効置換文字を使用して前記レスポンスを無効化するステップと、クライアントブラウザに前記レスポンスを返送するステップと、をさらに含むことを特徴とする請求項９乃至１１いずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロスサイトスクリプティングフィルタに関する。
【背景技術】
【０００２】
クロスサイトスクリプティング（ＸＳＳ）は、しばしば言及されるウェブアプリケーションセキュリティの脆弱性である。ＸＳＳ攻撃の目的は、攻撃者にユーザとユーザが信用するウェブサイトまたはウェブアプリケーションとの間の関係を支配可能とさせることである。
【０００３】
最も一般的な場合において、ＸＳＳは悪意のあるＵＲＬを含んでおり、このＵＲＬは、当該ＵＲＬ内に埋め込まれたクライアント側スクリプトが、生成されるウェブページのＨＴＭＬ（ｈｙｐｅｒｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）出力において繰り返されるように構成されている。被害者クライアントがクライアントウェブブラウザを使用して当該ＵＲＬに移動した場合、その結果として生じるクライアント側スクリプトは、信頼されているサーバと共有されているセッションのセキュリティ環境（ｓｅｃｕｒｉｔｙ  ｃｏｎｔｅｘｔ）において実行される。仮想ＸＳＳ攻撃は、以下の様に進むだろう：被害者がメールメッセージ内のリンクをクリックするように仕向けられる；リンクが被害者のブラウザを、良く知られておりかつ信頼されているウェブサイトらしきものに移動させる；しかし、ＵＲＬリンクは悪意のあるスクリプトブロックを含む；信頼されているサイトによって形成されたウェブページは、スクリプトブロックを悪意のあるスクリプトｅｖｉｌ．ｊｓを含むＵＲＬからエコー（ｅｃｈｏ）して、クライアントにｅｖｉｌ．ｃｏｍからのｅｖｉｌ．ｊｓスクリプトをローディングさせる。悪意のあるスクリプトは、ページに自らのニュース記事を表示する。被害者は、ニュース記事が信頼されているサイトからの本物の内容であると信用する。なぜならば、信頼されているサイトのドメインがブラウザのアドレスバーに表示されているからである。
【０００４】
信頼されているサイト上のコンテンツのなりすましは、全く害のない可能性がある。しかし、現代のウェブブラウザによって曝されているオブジェクトモデルは、さらに高度な攻撃を可能とする。コンテンツのなりすましの域を越え、これらの攻撃は：攻撃者に、遠隔的に被害者ユーザとしてウェブアプリケーションにログイン可能とさせ得るセッションクッキーを含むクッキーの盗取；悪意のあるウェブサイトへのキーボード入力のモニタリング；及び、ユーザの代わりにウェブサイトにおける行為を実行することを含む（例えば、Ｗｉｎｄｏｗｓ  Ｌｉｖｅ  Ｍａｉｌ（商標）におけるＸＳＳ攻撃は、攻撃者に電子メールメッセージを読むこと及び転送すること、新しいスケジュール表の予定を設定すること等を可能とさせる）。
【０００５】
近年では、ウェブサイトはインターネットを通じてウェブサイトに報告されたＸＳＳ問題点の保存記録を集め始めている。１０，０００を越える自主的に提出されたウェブサイトに対するＸＳＳ問題点が保存記録されてきている。攻撃者は、ＸＳＳ攻撃に関する保存記録を自由に調べて特定のウェブサイトにおいて使用可能である。ＸＳＳを軽減する（ｍｉｔｉｇａｔｉｎｇ）従来の技術はクライアント側では使用されず、文字コード、安全ライブラリ及びウェブアプリケーションスキャン技術を用いてサーバ側において使用されていた。上述したように、ウェブサイトサーバは、ＸＳＳ攻撃される多種多様な可能性からの圧力下にある。さらに、提案されてきたいくつかのＸＳＳ軽減技術がクライアント側のコンポーネントを含むが、クライアント側で効果的に完全にＸＳＳ攻撃をフィルタリングすることが可能なものはなかった。
【発明の概要】
【０００６】
以下に、本明細書において説明されるいくつかの新規な実施形態の基本的な理解を提供するための簡単な概要を記載する。この概要は、拡張的な概要ではなく、主要／重要な要素を特定する意図はなく、それらの範囲を画定する意図もない。本概要は、後に提供されるさらに詳細な説明の前置きとして単純な態様でいくつかのコンセプトを提供することのみを目的としている。
【０００７】
開示されているクロスサイトスクリプティング（ＸＳＳ）軽減技術は、今日存在するＸＳＳ脆弱性を除去するクライアント側フィルタをインストールすることによって、完全にクライアントに重点を置いている。専らクライアント側で機能するＸＳＳフィルタリングは、ウェブブラウザに、十分なＸＳＳ低減環境が適切に整っていないだろうサーバに関与するＸＳＳに対して防御することを可能とさせる。現在の動的なウェブサイトにおけるＸＳＳの拡散的な性質が、このことを必要としている。
【０００８】
この技術は、折り返されたページ内容とＵＲＬ及びＰＯＳＴデータの疑わしい部分とのマッチングによってＸＳＳ攻撃を正確に認識する。フィルタによって使用される技術は、安全と見なされるトラフィックを迅速に認識して通過させ、フィルタからのパフォーマンスインパクト（ｐｅｒｆｏｒｍａｎｃｅ  ｉｍｐａｃｔ：パフォーマンスへの影響）を最小限に維持する。非ＨＴＭＬ  ＭＩＭＥタイプは、同一サイト（ｓａｍｅ−ｓｉｔｅ）であるリクエストと同様に迅速に通過させられ得る。残りのリクエストに関しては、正規表現（他の文字列にマッチングさせるために使用される英数字の文字列）は、ＸＳＳヒューリスティクス（Ｈｕｒｉｓｔｉｃｓ）がＨＴＴＰリクエストＵＲＬにおいてマッチングした場合を除いて、フルＨＴＴＰレスポンスに亘って実行されない。
【０００９】
このフィルタは、他の場合では現れない新しいＸＳＳ脆弱性を開かない方法でＸＳＳ攻撃を無効化する。さらに、このフィルタは、良性な内容がＸＳＳ攻撃としてフラグ付けされる疑わしい事象において、ウェブブラウジング経験に悪影響を与えない方法でＸＳＳを無効化する。
【００１０】
フィルタへの入力は、フルＨＴＴＰリクエスト／レスポンストラフィックである。従って、代替実施例において、この技術は、ウェブプロキシサーバまたはウェブサーバにおいて機能し得る。この場合、フィルタは、特定のアプリケーションレベルの知識無しにＸＳＳブロックが可能なジェネリックなウェブアプリケーションファイアウォールとして機能する。
【００１１】
上記目的及び関連する目的を達成するため、いくつかの実例的特徴が、以下の説明及び添付の図面に関連して本明細書内で説明される。しかし、これらの特徴は、本明細書で説明される原理を用いることが可能である様々な態様のうちのいくつかを示したものに過ぎず、全ての特徴及びその均等物を含むことを意図している。他の利点及び新規な特徴は、添付の図面とともに以下の詳細な説明から明らかになるだろう。
【図面の簡単な説明】
【００１２】
【図１】クロスサイトスクリプティング（ＸＳＳ）攻撃をフィルタリングするシステムを示す図である。
【図２】ＸＳＳフィルタリングロジックのさらに詳細なブロックダイアグラムを示す図である。
【図３】新たな脅威が検出された際に使用されて展開され得るヒューリスティクスのセットの一例を示す図である。
【図４】ＸＳＳ攻撃をフィルタリングするフィルタコンポーネントを含むブラウザ実装例を示す図である。
【図５】サーバにフィルタリングロジックを適用しているサーバ実装例を示す図である。
【図６】プロキシサーバにフィルタリングロジックを適用しているサーバの実装例を示す図である。
【図７】折り返し型ＸＳＳ攻撃をフィルタリングするコンピュータに実装される方法を示す図である。
【図８】ＸＳＳフィルタを使用する例示の方法を示す図である。
【図９】開示されたアーキテクチャに従ってＸＳＳフィルタリングを実行可能なコンピューティングシステムのブロックダイアグラムを示す図である。
【図１０】折り返し型ＸＳＳ攻撃のフィルタリングのための例示のコンピューティング環境の概略ブロックダイアグラムを示す図である。
【発明を実施するための形態】
【００１３】
開示されるアーキテクチャは、完全にクライアントに重点を置く、折り返し型クロスサイトスクリプティング（ＸＳＳ）軽減フィルタリング技術である。フィルタは、パフォーマント（ｐｅｒｆｏｒｍａｎｔ）であり、互換性がありかつ安全である。互換性は、部分的にはウェブサイトの破壊を防ぐフィルタをいう。ブラウザは、デフォルトで利用可能な特徴としてフィルタリング技術を使用して、関連するユーザを保護する能力を提供する。従って、フィルタが少数であってもウェブサイトを壊してしまう場合、フィルタがデフォルトで使用可能な特徴として実装されるのは困難であるかまたは不可能である。
【００１４】
クライアント側のフィルタは、適切に十分なＸＳＳ軽減手段を有していないサーバに関連するＸＳＳ攻撃に対する防御を行う。この技術は、ヒューリスティクス及びヒューリスティックに生成されたシグネチャ（ｓｉｇｎａｔｕｒｅ）を使用して、ＵＲＬ及びＰＯＳＴデータの疑わしい部分と折り返されたページコンテンツとをマッチングすることによってＸＳＳ攻撃を正確に識別する。フィルタは、安全とみなされるトラフィックを迅速に認識して通過させ、クライアント処理におけるフィルタのパフォーマンスインパクトを最小限にする。クライアント側のＸＳＳフィルタは、ブラウザからウェブサーバへの特定のＭＩＭＥタイプのＨＴＴＰリクエスト及びＨＴＴＰレスポンスを監視可能である。非ＨＴＭＬ（ｈｙｐｅｒｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）ＭＩＭＥ（ｍｕｌｔｉｐｕｒｐｏｓｅ  Ｉｎｔｅｒｎｅｔ  ｍａｉｌ  ｅｘｔｅｎｔｉｏｎｓ）タイプは、同一サイトであるリクエストと同様に迅速に通過させられ得る。残りのリクエストに関して、正規表現は、ＸＳＳヒューリスティクスがＨＴＴＰ（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）リクエストＵＲＬにおいてマッチングしない限り、フルＨＴＴＰレスポンスに亘っては実行されない。
【００１５】
ここで、添付の図面を参照する。図面において、全体に亘って同じ参照符号は同等な要素を示すのに使用される。以下の記述においては、説明のために、全体の理解をもたらすべく様々の具体的な詳細が示される。新規な実施形態がこれらの具体的な詳細無しに実施され得ることは明らかである。他の例においては、説明を容易にするために周知の構造及び周知のデバイスがブロックダイアグラムの形式で示される。
【００１６】
図１は、ＸＳＳ攻撃をフィルタリングするシステム１００を示している。システム１００は、クライアント１０４とサーバ１０６との間のトラフィックを処理するクライアント１０４の通信コンポーネント１０２と、ＸＳＳフィルタリングロジック１１０を使用して、トラフィックからの折り返し型ＸＳＳ攻撃をフィルタリングするフィルタコンポーネント１０８と、を含む。通信コンポーネント１０２は、サーバ１０６にＨＴＴＰリクエストの形式でトラフィックを送信するブラウザであり得、クライアント１０４において動作しているフィルタコンポーネント１０８は、返送トラフィックからのＸＳＳ攻撃をフィルタリングする。当該攻撃はＨＴＴＰレスポンスの一部である。
【００１７】
完全にクライアント１０４においてフィルタリングがなされる場合、通信コンポーネント１０２は、ＨＴＴＰリクエストをサーバ１０６に送信するクライアントのブラウザであり、フィルタコンポーネント１０８は、クライアント１０４において動作してＸＳＳ攻撃をフィルタリングする。サーバ側の実装例が以下に説明される。
【００１８】
トラフィックはＨＴＴＰリクエスト／レスポンストラフィックである可能性があり、フィルタコンポーネント１０８は、リクエストトラフィックを解析して、レスポンストラフィックにおけるＸＳＳ攻撃を確認する。このことは、フィルタコンポーネント１０８がリクエストトラフィックのリファラヘッダ（ｒｅｆｅｒｅｒ  ｈｅａｄｅｒ）を解析することによってなされ得る。フィルタコンポーネント１０８は、ヒューリスティクスを有し、当該ヒューリスティクスをサーバ１０６へ向けたクライアント１０４の外部へのトラフィック（例えば、ＨＴＴＰリクエスト）に対して処理し、シグネチャを生成し、サーバ１０６からの受信するトラフィック（例えば、ＨＴＴＰレスポンス）に対するシグネチャを処理してＸＳＳ攻撃をフィルタリングする。
【００１９】
ヒューリスティクス処理は、フィルタコンポーネント１０８を組み込んで１または複数の無効文字（ｎｅｕｔｅｒ  ｃｈａｒａｃｔｅｒ）を選択する。ＨＴＴＰレスポンスにおいて識別された無効文字は、無効置換文字に置換される。換言すれば、１または複数のヒューリスティクスが、入力ＵＲＬ及びＰＯＳＴデータに亘って実行されてシグネチャが生成される。シグネチャ生成の処理は、無効文字を識別する処理である。そして、シグネチャは、サーバ１０６からの受信トラフィックに亘って実行されて、ＸＳＳ攻撃の存在が判定される。このことは、本明細書でさらに詳細に説明される。１つの実装例において、フィルタコンポーネント１０８は、ブラウザにおいてＨＴＭＬとしてレンダリングされるレスポンスをもたらすＭＩＭＥ型を有する受信トラフィックのコンテンツに基づいたＸＳＳ攻撃に関する受信トラフィックを処理する。
【００２０】
代替実装例において、フィルタコンポーネント１０８は、クライアントのブラウザの一部であり、ブラウザのスクリプトエンジンへの全ての入力を監視する。スクリプトブロックが認識された場合、フィルタコンポーネント１０８は、リクエストに関するオリジナルの外部へのトラフィック（例えば、オリジナルのＵＲＬ及び／またはＰＯＳＴデータ）を再度スキャンし、実行されようとしているスクリプトを発見する。スクリプトが発見されかつ当該スクリプトがマッチングしないものである場合、当該スクリプトは同一サイトスクリプト（ｓａｍｅ−ｓｉｔｅ  ｓｃｒｉｐｔ）であり、通過を許可され得る。しかし、当該スクリプトがマッチングするものである場合、それは折り返し型ＸＳＳであるとみなされ、この場合、当該スクリプトはフィルタリングされるかまたはさらに処理される。
【００２１】
図２は、ＸＳＳフィルタリングロジック１１０のさらに詳細なブロックダイアグラムを示している。フィルタリングロジック１１０は、ヒューリスティクスのセット２００を含むように示され、ヒューリスティクスのセット２００は、ヒューリスティクス処理コンポーネント２０２を介して外部へのトラフィック（例えば、クライアントブラウザからの）に適用され得る。ヒューリスティクス２００の処理はシグネチャ２０４をもたらし、シグネチャ２０４は、シグネチャチェックロジック２０６を使用して受信トラフィック（例えば、クライアントブラウザへの）に対して適用され得る。
【００２２】
ＸＳＳ解析は、２ステップの処理である。最初に、受信するリクエストトラフィック（例えば、ＵＲＬまたはｐｏｓｔデータ）においてヒューリスティクスに基づいてシグネチャを形成し、２番目に、レスポンストラフィックに対してシグネチャを処理し、マッチングするものを発見する（リフレクテッドバック（ｒｅｆｌｅｃｔｅｄ  ｂａｃｋ）とも称される）。換言すれば、クライアントからサーバへ達するＵＲＬまたはｐｏｓｔデータ（ＨＴＴＰリクエスト）内のコンテンツを探索するだけではなく、ＨＴＴＰレスポンス内へ同一のデータがリプレイ(ｒｅｐｌａｙ)されているか否かも判別する。下位のフィルタは「１ステップ」であり、リクエスト内の不良は探索するが、エコーバックされ実行されるコンテンツとリクエストとをマッチングする試行は行わない。
【００２３】
１つのＸＳＳ攻撃方法は、フィルタに二重引用符等の文字を排除させることによってフィルタを操作して、別の方法ではＸＳＳは不可能であるＸＳＳを可能にするものである。この攻撃を無効にする技術は、ＨＴＴＰレスポンス内で変更される文字の良好な抽出を行う技術である。この正規のウェブページ以外のＸＳＳ部分だけの選択的な無効化は、ユーザへの最小限の干渉でＸＳＳをブロックする。これは、ページのブロッキング及び／または高いレベルのユーザ対話の要求とは対照的である。実行に影響する文字またはこのタイプの攻撃を可能とする文字は選択されないだろう。構文解析ツールがスクリプトに遭遇した際に、スクリプトが即時に実行されることを効果的に阻止するハッシュシンボルが使用され得る。従って、脅威は、問題となっているレスポンス内において置換されるだろう文字のインテリジェントな（ｉｎｔｅｌｌｉｇｅｎｔ）抽出によって軽減される。
【００２４】
第２の攻撃手法は、文字がサーバへリプレイされるかまたはサーバからリプレイされる際にドロップ（ｄｒｏｐ）されるかまたは解釈されるリクエストに、文字を加えることによってフィルタを操作するものである。攻撃は、ＵＲＬ内に存在するスクリプトタグを含み得る。これは、実際に攻撃の一般的な形式である。従って、フィルタリングロジック１１０は、潜在的なスクリプトタグに関してＵＲＬまたはｐｏｓｔデータを解析する。このスクリプトタグがリプレイされている場合、ロジック１１０は、レスポンス内の同一のタグまたは同一のテキストを認識可能である必要がある。攻撃者が場違いなユニコード文字またはエクスクラメーションマーク（ｅｘｃｌａｍａｔｉｏｎ  ｍａｒｋ）を、例えばスクリプトタグの途中に追加可能であると判断し、サーバがこれらをリプレイする前にこれらの文字またはマークをドロップする場合、フィルタはバイパスされ得る。なぜならば、フィルタはスクリプトタグを探索するが、途中にエクスクラメーションマークを有するスクリプトタグは探索しないからである。
【００２５】
この第２の攻撃手法を無効にする方法は、フィルタリングの第１のステージ（リクエスト）に基づいてシグネチャ２０４を作成すること、すなわち、シグネチャ２０４をＨＴＴＰレスポンス内において予期されるものに正確にマッチングするものにするのではなく、ＸＳＳ攻撃の本質を形作る重要な文字にマッチングするものとするものである。換言すれば、リクエスト内への１または複数の追加の文字の挿入は、フィルタロジックの有効性を無効化しないだろう。
【００２６】
ヒューリスティクス２００は所定のセットであり、ブラウザにおいてスクリプト実行をもたらし得るスクリプトタグ及び／またはスクリプト表現のリクエストトラフィック（ＵＲＬまたはｐｏｓｔデータ）を解析する第１のステージにおいて使用される。このような情報の識別は最終的なものではない。従って、ヒューリスティクス２００において見出される情報は、ＨＴＴＰレスポンスにおいてリプレイされるＸＳＳ攻撃の証拠として機能するシグネチャ２０４を生成するのに使用される。攻撃が時とともに進化すると、異なったヒューリスティクスがコード化されてヒューリスティクス２００に追加されてこれらの新しい攻撃が認識され得る。新しいヒューリスティクスは、フィルタリングロジック１１０へのアップデートの形式で提供され得る。
【００２７】
図３は、新しい脅威が検出された際に使用されて展開され得るヒューリスティクス２００のセットの一例を示している。ＵＲＬをスキャンするためのヒューリスティクスは、限定するわけではないが以下のものを含んでいる。
【００２８】
ヒューリスティクス３００は、（が続きその後に）が続く″または′を検出する。最初の″または′の後にはマッチングのための非英数字が続く。このことは、これらのものが誤ってＵＲＬにマッチングをすることを防止する。ヒューリスティクス３０２は、″；ｓｏｍｅｔｈｉｎｇ．ｓｏｍｅｔｈｉｎｇ＝ｓｏｍｅｔｈｉｎｇｅｌｓｅを検出する。ヒューリスティクス３０４は、スクリプトブロックを明示的に検出する。ヒューリスティクス３０６は、″ｅｘｐｒｅｓｓｉｏｎ（″が後に続く″ｓｔｙｌｅ″を検出する。ヒューリスティクス３０８は、ある表現を有するＳＴＹＬＥエレメントを検出する。ヒューリスティクス３１０は、ｓｃｒｉｐｔ  ｓｒｃ＝ｂｌｏｃｋｓを検出する。ヒューリスティクス３１２は、第１の形式のｊａｖａスクリプトＵＲＬを検出する。ヒューリスティクス３１４は、第２の形式のｊａｖａスクリプトＵＲＬを検出する。ヒューリスティクス３１６は、ｖｂスクリプトＵＲＬを検出する。ヒューリスティクス３１８は、ＥＭＢＥＤされたオブジェクトを検出する。ヒューリスティクス３２０は、デフォルトの動作を含む動作を検出する。ヒューリスティクス３２２は、スタイルシートを参照し得るＬＩＮＫエレメントを検出する。ヒューリスティクス３２４は、データ結合を有するエレメントを検出する（スクリプトはＸＭＬデータアイランド内に隠され得る）。ヒューリスティクス３２６は、アプレットを参照し得るＡＰＰＬＥＴエレメントを検出する。ヒューリスティクス３２８は、型属性を有するＯＢＪＥＣＴエレメントを検出する。ヒューリスティクス３３０は、＜［ＴＡＧ］ＯＮ［ＥＶＥＮＴ］＝ＳｏｍｅＦｕｎｃｔｉｏｎ（）．．．ａｎｄ．．．＜［ＴＡＧ］ＯＮ［ＥＶＥＮＴ］＝ＳｏｍｅＦｕｎｃｔｉｏｎ（）を検出し、ヒューリスティクス３３２は、クッキーを設定するかまたは無名コンテンツ（ｏｂｓｃｕｒｅ  ｃｏｎｔｅｎｔ）型を設定し得るＭＥＴＡエレメントを検出する。
【００２９】
新しい脅威が検出された際には、他のヒューリスティクスも追加され得る。例えば、ブロックＦＲＡＭＥｓ／ＩＦＲＡＭＥｓを検出するヒューリスティクスが提供され得る。入力の様々な置換が、必要に応じてシグネチャ生成処理においてプッシュ（ｐｕｓｈ）され得る。例えば、いくつかのウェブサーバプラットフォームは、同一の名前を有するパラメータを暗黙のうちに組み合わせる。例えば、
ｈｔｔｐ：／／ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｍｉｃｒｏｓｏｆｔ．ａｓｐ？Ｎａｍｅ＝ａｓｄｆ＆Ｎａｍｅ＝ｚｚｚｚは、「ａｓｄｆ，ｚｚｚｚ」としてリプレイする名前付き因数（ｎａｍｅ  ｖａｒｉａｂｌｅ）をもたらし得る。攻撃は、このサーバ側の動作を利用してフィルタを操作可能である。従って、フィルタは、類似のパラメータ名前収集を実行してこのサーバ側の動作を模倣する。シグネチャ生成処理におけるオリジナルのＵＲＬのプッシュに加えて、同一の名前のパラメータがある場合、フィルタはこれらを組み合わせて結果として得られたＵＲＬをシグネチャ生成プロセスにおいてプッシュする。上述の例示において、第２のＵＲＬがシグネチャ生成処理においてプッシュされる：
ｈｔｔｐ：／／ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｍｉｃｒｏｓｏｆｔ．ａｓｐ？Ｎａｍｅ＝ａｓｄｆ，ｚｚｚｚ
【００３０】
図４は、ＸＳＳ攻撃をフィルタリングするフィルタコンポーネント１０８を含むブラウザ実装例４００を示している。クライアントブラウザ４０２（通信コンポーネント）は、ウェブサーバ４０６にＨＴＴＰリクエスト４０４を送信する。フィルタコンポーネント１０８は、リクエスト内のＵＲＬ及び／またはＰＯＳＴデータにヒューリスティクスを適用することによってリクエストを処理し、シグネチャを生成する。ヒューリスティクスが、リクエストは疑わしいと示した場合、フィルタコンポーネント１０８は、ＨＴＴＰレスポンス４０８にシグネチャを適用し、折り返し型ＸＳＳ攻撃をフィルタリングして排除する。
【００３１】
代替の実施形態において、ブラウザ内のフィルタは、特定のＨＴＴＰレスポンスヘッダを送信することによって、特定のレスポンスに対するＸＳＳフィルタを無効にすることをサーバに可能とさせる。非常に独特でかなり希な脆弱性（例えば「レスポンス分割」脆弱性）が無い限り、攻撃者がこのヘッダをスプーフィング（ｓｐｏｏｆ）することは不可能であるので、攻撃者はこのフィルタを無効化することはできない。この特徴は、アプリケーション互換性手段として意図され、サーバ側ＸＳＳフィルタリングを行うウェブサイト、すなわちクライアント側のＸＳＳフィルタがサーバに全く影響を与えてほしくないウェブサイトがブラウザ内の当該機能を無効化し得ることを保証する。
【００３２】
図５は、サーバ実装例５００を示しており、フィルタリングロジックがウェブサーバ５０２に適用されている。ここで、フィルタコンポーネント１０８は、サーバファイアウォールアプリケション５０４（この例においては通信コンポーネント）の一部として含まれ得る。ファイアウォールアプリケーション５０４は、ネットワーク５０８を通じたデータの通信を容易にする１または複数のサーバプロトコル５０６において動作する。ファイアウォールアプリケーション５０４とサーバ５０２との間のトラフィックは、ＨＴＴＰリクエストトラフィック５１０及びＨＴＴＰレスポンストラフィック５１２を含み得る。フィルタコンポーネント１０８は、リクエストトラフィック５１０において動作し、ヒューリスティクスを利用してレスポンストラフィック５１２における処理のためのシグネチャを生成する。換言すれば、通信コンポーネントは、トラフィックを処理するサーバ５０２におけるファイアウォールアプリケーション５０４であり、フィルタコンポーネント１０８は、ファイアウォールアプリケーション５０４の一部として動作してＸＳＳ攻撃をフィルタリングする。
【００３３】
図６は、サーバ実装例６００を示しており、フィルタリングロジックがプロキシサーバ６０２に適用されている。ここにおいて、フィルタコンポーネント１０８は、プロキシサーバファイアウォール６０４（この例において通信コンポーネント）の一部として含まれ得る。プロキシファイアウォール６０４は、ネットワーク５０８を介したデータの通信を容易にする１または複数のサーバプロトコル５０６において動作する。プロキシファイアウォール６０４とプロキシサーバ６０２との間のトラフィックは、ＨＴＴＰリクエストトラフィック５１０及びＨＴＴＰレスポンストラフィック５１２を含み得る。フィルタコンポーネント１０８は、リクエストトラフィック５１０において動作し、ヒューリスティクスを使用してレスポンストラフィック５１２における処理のためのシグネチャを生成する。換言すれば、通信コンポーネントは、トラフィックを処理するプロキシサーバ６０２におけるプロキシファイアウォール６０４であり、フィルタコンポーネント１０８は、プロキシファイアウォール６０４の一部として動作してＸＳＳ攻撃をフィルタリングする。
【００３４】
サーバ実装例６００と同一の構成は、一揃いのウェブサーバによる使用に関するリバースプロキシサーバにも適用可能である。従って、一揃いのサーバへ入ってくる全てのトラフィックは、最初にプロキシに到達し、プロキシは当該プロキシにおいてトラフィックを取り扱い得るか、またはさらなる処理のために指定されたサーバ（１または複数）にトラフィックを転送する。従って、プロキシからウェブサーバ（１または複数）に送られたリクエストは、レスポンストラフィックとともにチェックされ、仕掛けられたＸＳＳ攻撃の存在が確認され、ＸＳＳ攻撃がブロックされる。
【００３５】
以下に示すのは、開示されたアーキテクチャの新規な特徴を実行するための例示の手順の代表的な一連のフローチャートである。説明の簡潔さのために、本明細書に示された１または複数の手順、例えばフローチャートまたはフローダイアグラムとして示された手順が一連の動作として示されて説明されているが、手順は、この動作の順序に限定されるものではなく、いくつかの動作は本明細書に示されかつ説明されたのと異なった順序で行われかつ／または他の動作と同時に行われ得ると理解されるべきである。例えば当業者は、手順が、一連の相互に関連する状態または事象として、状態ダイアグラム等において代替的に示され得ることを理解するべきである。さらに、手順において説明された全ての動作が新規な実装例に対して必要とされるわけでは無い。
【００３６】
図７は、コンピュータに実装されて折り返し型ＸＳＳ攻撃をフィルタリングする方法を示している。７００において、リクエストはサーバに送信される。リクエストは、ＨＴＴＰリクエストか、または他の適切なプロトコルに従った他のリクエストであり得る。７０２において、リクエストがヒューリスティクスを使用して処理されて、シグネチャが生成されるべきかが判定される。７０４において、レスポンスがサーバから受信される。このレスポンスは、ＨＴＴＰレスポンスか、またはＸＳＳ攻撃に使用される他の同様のレスポンス型であり得る。７０６において、このレスポンスは、シグネチャの生成に基づいて折り返し型ＸＳＳ攻撃としてフィルタリングされる。
【００３７】
図８は、ＸＳＳフィルタを使用する例示の方法を示している。８００において、ＨＴＴＰレスポンスが受信される。１つのパフォーマンス志向の実装例において、フィルタはスクリプトの実行をもたらし得るＭＩＭＥ型を有するダウンロードされたコンテンツに対してのみ有効である。従って、８０２において、ＨＴＭＬ  ＭＩＭＥ型に対してチェックが行われる。レスポンスがＨＴＭＬ  ＭＩＭＥ型ではない場合、フローは８０４に進み、ＨＴＴＰレスポンスがクライアントウェブブラウザに送られる。レスポンスがＨＴＭＬ  ＭＩＭＥ型を含む場合、フローは８０２から８０６に進み、フィルタがＨＴＴＰリクエスト内のリファラヘッダをチェックする。同一のリファラの場合、これは同一サイトスクリプティングであり、フローは８０４に進んでレスポンスが送られる。なぜならば、さらなるフィルタリングが実行される必要が無いからである。
【００３８】
リファラヘッダ内の完全に記述したドメイン名が、取得されるＵＲＬの完全に記述したドメイン名とマッチングしない場合、リクエストはクロスサイトスクリプトである可能性があり、フィルタリングされる。従って、フローは８０６から８０８に進み、マッチングするヒューリスティックが発見される。マッチングするものが発見されない場合、フローは８０４にすすみ、ウェブブラウザにレスポンスが転送される。その後、フィルタはリクエストに関連するＵＲＬ及びＰＯＳＴデータを取得し、正規表現を使用してＸＳＳ攻撃を示す特定のパターンを認識する。これらのケースインセンシティブ（case-insensitive）なパターンは、フィルタに関するヒューリスティクスである。以下は、正規表現形式のフィルタからのヒューリスティクスの例である。
【００３９】
0005642856.tif 000002
【００４０】
ヒューリスティクス内の内側中括弧｛｝内の文字は「無効文字」と称され、後にＨＴＴＰ応答内で認識され無効化される。ヒューリスティクスは、１または複数の無効文字を有し得る。ヒューリスティクスは、スクリプトタグを認識するだろう。スクリプトタグがＨＴＭＬ内で共通であり得るならば、ＵＲＬまたはＰＯＳＴデータ内のスクリプトタグの存在は、ＸＳＳ攻撃を示す。フィルタは、ブラウザにおいて使用されてクロスサイトスクリプティングをトリガし得る個々のメカニズムを、各々が認識するヒューリスティクスを含み得る。追加のメカニズムが後に認識されたならば、新しいヒューリスティクスがフィルタに追加され得る。
【００４１】
無効文字の各々（この例の場合文字「ｒ」）は、クロスサイトスクリプティング攻撃をブロックするためにＨＴＴＰレスポンスボディ内でフィルタによって結果的に変更されるだろう文字を示す。文字「＃」は、無効置換文字として使用され得る。これは、ＨＴＭＬエレメント及びＨＴＭＬエレメントが挿入されるスクリプトブロックを破壊するのに有効である。無効置換文字は、ヒューリスティクス毎ベースで設定可能である。
【００４２】
フィルタの無効文字の抽出は、フィルタが妨害され得るか否かを判定し得る。あるヒューリスティクスに関して選択された不正な無効文字は、妨害され得るフィルタをもたらし得る。例として、無効文字としての引用記号の抜き取りは、フィルタに引用符を無効化させるだろう。抜け目のない攻撃者は、このことを利用してページ上で強制的にマッチングさせて引用符を無効化し、クロスサイトスクリプティング攻撃を実際に可能とする。これ以外の方法では攻撃は不可能である。
【００４３】
ヒューリスティクスにおけるマッチングは、必ずしもフィルタをトリガしてクロスサイトスクリプティングを検出するわけではない。しかし、マッチングは、フィルタに、ＨＴＴＰレスポンスボディが分析されて、ＵＲＬまたはＰＯＳＴデータが実際に出力ページに対してリプレイされたことが立証されるだろうことを示す。
【００４４】
ヒューリスティクスがマッチングした場合、フローは８０８から８１０へ進み、フィルタはマッチングする対象の各々に対して１つのシグネチャを生成する。シグネチャは、リプレイされた疑わしい入力に関してＨＴＴＰレスポンスをスキャンするために使用され得る新しい正規表現である。無効置換文字は、シグネチャがマッチングされた後にＵＲＬ内の所定の位置に一時的に置かれ、ＵＲＬにおいてもはやマッチングするものが発見され得なくなるまでヒューリスティクスに関するマッチングが継続する。シグネチャは、無効置換文字を使用せずに適切に生成される。さもなければ、シグネチャは自分自身で無効置換文字を包含し、ＨＴＴＰレスポンス内に存在する攻撃と正確にマッチングしないだろう。引用符、それに続く１セットの丸括弧を無効化するだろうヒューリスティクスを考える。
【００４５】
0005642856.tif 000003
【００４６】
正規表現は、丸括弧の最初のセットまたは丸括弧の最後のセットにマッチングさせるのに十分に有効である。しかし、正規表現は、丸括弧の真ん中のセットをマッチングすることができない。このため、全てのシグネチャが特定のヒューリスティクスに対して識別されるまで、繰り返しのマッチング／無効化処理が行われることが求められる。
【００４７】
ヒューリスティクスの各々によって、安全な文字のリストが提供される。スクリプトタグを検出するヒューリスティクスに関して、安全な文字は、大なり記号（＞）及び小なり記号（＜）並びに英数字である。安全な文字は、マッチングに重要である文字であり、かつヒューリスティクスがブロックしようとするある種の攻撃に必要な文字である。シグネチャベースの方法は、フィルタが逐語的なマッチングで単純に検索する場合にフィルタが必ずしもマッチングするものを発見しない故に用いられる。ウェブサーバは、特定の文字を偶然に除去または解釈し得る。実際にこのようにウェブサーバ動作の監視をすることは一般的であり、攻撃者はこの動作を有利に利用する。例えば、以下の様な攻撃者ＵＲＬを考える。
【００４８】
0005642856.tif 000004
【００４９】
サーバが入力から偶然にドル記号を除去した場合、この攻撃はマッチングしない。この種の攻撃を回避するために、逐語的テキストマッチングよりもシグネチャ手法が使用される。
【００５０】
以下は、スクリプトタグを検出するヒューリスティクスのマッチング対象の一例である。
【００５１】
0005642856.tif 000005
【００５２】
このマッチング対象に対して生成されるシグネチャは以下のものであり得る。
【００５３】
0005642856.tif 000006
【００５４】
シグネチャ内の
【００５５】
0005642856.tif 000007
【００５６】
の各々は、オリジナルのマッチング対象内の安全ではない文字を示している。０から１０の特定されない文字列は、
【００５７】
0005642856.tif 000008
【００５８】
にマッチングし得る。フローは８１０から８１２に進み、シグネチャとマッチングするものがチェックされる。特定のページに対してシグネチャが生成されていない場合、フローは８１２から８０４に進み、フィルタがページに変更無しでロードすることを許可する、すなわちＸＳＳ攻撃は検出されなかった。
【００５９】
しかし、シグネチャが存在する場合、フローは８１２から８１４に進み、フィルタは、シグネチャの各々に関してＨＴＴＰレスポンスボディをスキャンし、シグネチャとマッチングするものの各々に関して適切な文字を無効化する。一度認識がなされると、フィルタは、中括弧内の文字によってシグネチャ内に示されるように、どの文字（１または複数）が無効化されるべきかを正確に記録する。一度全てのシグネチャがＨＴＴＰレスポンスボディに亘って実行されると、無効文字が所定の位置に置かれ、ＨＴＴＰレスポンスボディはブラウザに返送される。８１６において、ＸＳＳが特定のＵＲＬ（及び、適当ならばＰＯＳＴデータ）に関してブロックされた事実が記録され、ユーザは仕掛けられたＸＳＳ攻撃を通知される。８１６からフローは８０４に進み、８０４において、ＸＳＳ攻撃が無効化されるだろう場合を除いて、ページは通常にレンダリングされるだろう。
【００６０】
本願に使用されている「コンポーネント」及び「システム」は、コンピュータ関連エンティティ、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアをいう。例えば、コンポーネントは、限定するものではないが、プロセッサにおいて実行されている処理、プロセッサ、ハードディスクドライブ、（光学及び／または磁気記憶媒体）複数の記憶デバイス、オブジェクト、実行可能ファイル、実行の脈絡（ｔｈｒｅａｄ  ｏｆ  ｅｘｅｃｕｔｉｏｎ）、プログラム及び／またはコンピュータであり得る。例として、サーバにおいて実行されているアプリケーション及びサーバ自体の両方がコンポーネントであり得る。１または複数のコンポーネントが、処理及び／または実行の脈絡内に存在し得、コンポーネントは、１のコンピュータ内に置かれ得るかまたは２以上のコンピュータ間に分散され得る。
【００６１】
図９を参照すると、開示されたアーキテクチャに従ってＸＳＳフィルタリングを実行するコンピューティングシステム９００のブロックダイアグラムが示されている。システム９００の様々な特徴に関して追加の説明を提供するために、図９及び以下の説明は、当該様々な特徴が実装され得る適切なコンピューティングシステム９００の概要的で一般的な説明を提供することを目的としている。上述の説明は１または複数のコンピュータにおいて実行され得るコンピュータ実行可能命令の一般的な条件においてなされているが、当業者は新規な実施形態も他のプログラムモジュールとの組み合わせにおいて実装され得かつ／またはハードウェア及びソフトウェアの組み合わせとして実装可能であり得ることも理解するだろう。
【００６２】
通常は、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造等を含む。さらに、当業者は、本発明の方法が、単一プロセッサもしくはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、並びに、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースもしくはプログラム制御可能家電等を含む他のコンピュータシステム構成を用いて実施され得、各々が１または複数の関連するデバイスと動作可能に結合され得ることを理解するだろう。
【００６３】
説明された特徴は、いくつかのタスクが通信ネットワークを通じて接続されているリモート処理デバイスによって実行される分散型コンピューティング環境においても実施され得る。分散型コンピューティング環境において、プログラムモジュールは、ローカル及びリモートのメモリ記憶デバイス内に配され得る。
【００６４】
コンピュータは一般的に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータよってアクセス可能な任意の市場入手可能媒体であり得、揮発性媒体及び不揮発性媒体、リムーバブル媒体及び非リムーバブル媒体を含む。例示の目的であり限定するものではないが、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報の記憶の任意の方法及び技術において実装される揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、限定するわけではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｋ）もしくは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または他の媒体であって、所望の情報を保存するために使用可能でありかつコンピュータによってアクセス可能な媒体を含む。
【００６５】
図９を再度参照すると、様々な特徴を実装する例示のコンピュータシステム９００は、コンピュータ９０２を含み、コンピュー９０２は、処理ユニット９０４、システムメモリ９０６及びシステムバス９０８を有する。システムバス９０８は、限定するわけではないがシステムメモリ９０６を含むシステムコンポーネントと処理ユニット９０４とのインタフェースを提供する。処理ユニット９０４は、様々な市場入手可能なプロセッサのいずれかであり得る。デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャも、処理ユニット９０４として使用され得る。
【００６６】
システムバス９０８は、メモリバス（メモリコントローラを有りまたは無しの）、周辺機器バス、及びローカルバスであって、様々な商用利用されているバスアーキテクチャを使用するバスをさらに相互に接続し得る様々なタイプのバス構造のいずれかであり得る。システムメモリ９０６は、不揮発性メモリ（不揮発性）９１０及び／または揮発性メモリ９１２（例えばＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含み得る。ＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）は、不揮発性メモリ９１０（ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）内に保存され得、ＢＩＯＳは、起動中等におけるコンピュータ９０２内の要素間の情報の伝送を行う基本ルーチンを保存している。揮発性メモリ９１２は、データのキャッシュのためのスタティックＲＡＭ等の高速ＲＡＭも含む。
【００６７】
コンピュータ９０２は、内蔵ハードディスクドライブ（ＨＤＤ）９１４（ＥＩＤＥ、ＳＡＴＡ等）、磁気フロッピーディスクドライブ（ＦＤＤ）９１６（例えば、リムーバブルディスケット９１８に書き込むかまたはそこから読み出しを行うもの）及び光学ディスクドライブ９２０（例えば、ＣＤ−ＲＯＭディスク９２２から読み出しを行うもの、またはＤＶＤ等の他の大容量の光学媒体からの読み出しもしくはそこへの書き込みをするもの）、をさらに含む。内蔵ＨＤＤ９１４は、適切なシャーシにおける外部使用のために構成されても良い。ＨＤＤ９１４、ＦＤＤ９１６及び光学ディスクドライブ９２０は、それぞれＨＤＤインタフェース９２４、ＦＤＤインタフェース９２６及び光学ドライブインタフェース９２８によってシステムバス９０８に接続され得る。外部ドライブ実装用のＨＤＤインタフェース９２４は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）及びＩＥＥＥ１３９４インタフェース技術のうちの少なくとも１つまたはこれらの両方を含み得る。
【００６８】
ドライブ及び関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令等の不揮発性記憶装置を提供する。コンピュータ９０２に関して、ドライブ及び媒体は、適切なデジタルフォーマットで任意のデータの保存を行う。上述のコンピュータ可読媒体の説明が、ＨＤＤ、リムーバブル磁気ディスケット（例えばＦＤＤ）、及びＣＤもしくはＤＶＤ等のリムーバブル光学媒体に言及しているが、ジップ（Ｚｉｐ）ドライブ、磁気カセット、フラッシュメモリカード、カートリッジ等の、コンピュータよって可読な他のタイプの媒体も例示の動作環境において使用され得、さらにこのような媒体のいずれかが、開示されたアーキテクチャの新規な方法を実行するコンピュータ実行可能命令を含み得ることが当業者に理解されるべきである。
【００６９】
多数のプログラムモジュールがドライブ及び揮発性メモリ９１２に保存され得、プログラムモジュールには、オペレーティングシステム９３０、１または複数のアプリケーションプログラム９３２、他のプログラムモジュール９３４、及びプログラムデータ９３６を含む。１または複数のアプリケーションプログラム９３２、他のプログラムモジュール９３４、及びプログラムデータ９３６は、通信コンポーネント１０２（ブラウザ等）、クライアント１０４、フィルタコンポーネント１０８、ＸＳＳフィルタロジック１１０、ヒューリスティクス処置コンポーネント２０２、ヒューリスティクス２００、シグネチャ２０４、シグネチャチェックロジック２０６、ブラウザ４０２、サーバファイアウォール５０４、及びプロキシファイアウォール６０４を含み得る。
【００７０】
オペレーティングシステムの全てまたは一部、アプリケーション、モジュール、及び／またはデータは、揮発性メモリ９１２内にもキャッシュされ得る。開示されたアーキテクチャが様々な市場入手可能なオペレーティングシステム、またはオペレーティングシステムの組み合わせとともに実装され得ることが理解されるべきである。
【００７１】
ユーザは、１または複数の有線／無線入力デバイス、例えばキーボード９３８及びマウス９４０等のポインティングデバイスを用いて、コンピュータ９０２にコマンド及び情報を入力し得る。他の入力デバイス（図示せず）は、マイクロフォン、ＩＲ遠隔コントローラ、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン等を含み得る。これら及び他の入力デバイスは、システムバス９０８に接続されている入力デバイスインタフェース９４２を介して処理ユニット９０４にしばしば接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインタフェース等の他のインタフェースによっても接続され得る。
【００７２】
モニタ９４４または他のタイプの表示デバイスも、ビデオアダプタ９４６等のインタフェースを介してシステムバス９０８に接続される。モニタ９４４に加えて、コンピュータは一般的に、スピーカ、プリンタ等の他の周辺機器出力デバイス（図示せず）を含む。
【００７３】
コンピュータ９０２は、リモートコンピュータ（１または複数）９４８等の１または複数のリモートコンピュータとの有線及び／または無線通信を介した論理接続を使用してネットワーク環境において動作し得る。リモートコンピュータ（１または複数）９４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンタテイメント電化製品、ピアデバイスまたは他の共通ネットワークノードであり得、一般的にコンピュータ９０２に関して説明される要素の多くまたは全てを含むが、簡潔さのためにメモリ／記憶デバイス９５０のみが図示されている。示された論理接続は、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）９５２及び／またはさらに大きなネットワーク、例えばＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）９５４との有線／無線接続性を有する。このようなＬＡＮ及びＷＡＮネットワーク環境は、オフィス及び会社において一般的であり、イントラネット等の企業規模広域コンピュータネットワークを容易にし、これらのネットワークの全ては、インターネット等のグローバル通信ネットワークに接続され得る。
【００７４】
ＬＡＮネットワーク環境において使用される場合、コンピュータ９０２は、有線及び／または無線通信ネットワークインタフェースまたはアダプタ９５６を介してＬＡＮ９５２に接続される。アダプタ９５６は、ＬＡＮ９５２への有線及び／または無線通信を容易にし得、ＬＡＮ９５２は、アダプタ９５６のワイヤレス機能と通信するために設けられたワイアレスアクセスポイントも含み得る。
【００７５】
ＷＡＮネットワーク環境において使用される場合、コンピュータ９０２は、モデム９５８を含む、すなわちＷＡＮ９５４上の通信サーバに接続されるか、またはインターネット等によってＷＡＮ９５４を介した通信を確立する他の手段を有する。内蔵または外部デバイスであり、有線及び／または無線デバイスであり得るモデム９５８は、入力デバイスインタフェース９４２を介してシステムバス９０８に接続されている。ネットワーク環境において、コンピュータ９０２またはその一部に関連して示されているプログラムモジュールは、リモートメモリ／記憶デバイス９５０内に保存され得る。示されたネットワーク接続は例示であり、コンピュータ間の通信接続を確立する他の手段も使用され得る。
【００７６】
コンピュータ９０２は、無線通信内に動作可能に設けられている任意の無線デバイスまたはエンティティ、例えばプリンタ、スキャナ、デスクトップ及び／またはポータブルコンピュータ、ポータブルデータアシスタント、通信衛星、無線で検出可能なタグと関連した装置または場所（キオスク、ニューススタンド、化粧室）の任意の一部、並びに電話と通信可能である。これらには、少なくともＷｉ-Ｆｉ（すなわちワイヤレスフィディリティ）及びブルートゥース（Ｂｌｕｅｔｏｏｔｈ）（商標）無線技術を含む。従って、通信は、従来のネットワークまたは少なくとも２つのデバイス間の単純なアドホック通信のような所定の構造であり得る。Ｗｉ-Ｆｉネットワークは、ＩＥＥＥ  ８０２．１１ｘ（ａ、ｂ、ｇ等）と称される無線通信技術を使用して、安全で、信頼性があり、高速な無線接続性を提供する。Ｗｉ-Ｆｉネットワークは、コンピュータ同士を接続するため、コンピュータとインターネットを接続するため、及びコンピュータと有線ネットワーク（ＩＥＥＥ８０２．３またはイーサネット（登録商標）を使用する）を接続するために使用され得る。
【００７７】
図１０を参照すると、折り返し型ＸＳＳ攻撃をフィルタリングする例示のコンピューティング環境１０００の概略ブロックダイアグラムが示されている。環境１０００は、１または複数のクライアント１００２を含んでいる。クライアント１００２は、ハードウェア及び／またはソフトウェア（スレッド、プロセス、コンピューティングデバイス等）であり得る。例えば、クライアント１００２は、クッキー（１または複数）及び／または関連する文脈情報（ｃｏｎｔｅｘｔｕａｌ  ｉｎｆｏｒｍａｔｉｏｎ）を保有し得る。
【００７８】
環境１０００は、１または複数のサーバ１００４も含む。サーバ１００４もハードウェア及び／またはソフトウェア（スレッド、プロセス、コンピューティングデバイス等）であり得る。例えば、サーバ１０４はスレッドを保有して、そのアーキテクチャを使用して変換を行い得る。クライアント１００２とサーバ１００４との間の１つの可能な通信は、２または３以上のコンピュータプロセス間で伝送される様に成されたデータパケット形式であり得る。例えば、データパケットは、クッキー及び／または文脈情報を含み得る。環境１０００は、通信フレームワーク１００６（例えば、インターネット等のグローバル通信ネットワーク）を含み、通信フレームワーク１００６は、クライアント１００２とサーバ１００４との間の通信を容易にするべく使用され得る。
【００７９】
通信は、有線（光ファイバを含む）及び／または無線技術によって容易にされ得る。クライアント１００２は、１または複数のクライアントデータストア１００８に動作可能に接続され、クライアントデータストア１００８は、情報をクライアント１００２にローカルに保存するべく使用され得る（クッキー（１または複数）及び／または関連する文脈情報）。同様に、サーバ１００４は、１または複数のサーバデータストア１０１０に動作可能に接続され、サーバデータストア１０１０は、情報をサーバ１００４にローカルに保存するべく使用され得る。
【００８０】
クライアント１００２は、クライアント１０４を含み得、サーバ１００４は、ウェブサーバ４０６、サーバ５０２及びサーバ６０２を含み得る。ファイアウォール５０４及び６０４は、サーバシステムにインストールされている。
【００８１】
上述の説明は、開示されたアーキテクチャの例を含んでいる。当然ながら考えられるコンポーネント及び／または手順の組み合わせの全てを説明することは不可能であり、当業者は他の多くの組み合わせ及び配列が可能であることを理解するだろう。従って、新規なアーキテクチャは、添付の特許請求の範囲の趣旨及び範囲に含まれる全ての代替例、変更例及び変形例を包含する。さらに、「含む」は、発明を実施するための形態または特許請求の範囲において使用されている範囲において、特許請求の範囲における移行句として使用される際の「含む」と同様に解釈される。
【図１】
0005642856.tif 000009
【図２】
0005642856.tif 000010
【図３】
0005642856.tif 000011
【図４】
0005642856.tif 000012
【図５】
0005642856.tif 000013
【図６】
0005642856.tif 000014
【図７】
0005642856.tif 000015
【図８】
0005642856.tif 000016
【図９】
0005642856.tif 000017
【図１０】
0005642856.tif 000018