まず、XSSは何ですか?それはどのように起こるのですか?
XSS(クロスサイトスクリプティング)が呼び出され、クロスサイトスクリプティング攻撃を、それが最も一般的なWebアプリケーションの脆弱性です。Webページのクライアント側のスクリプト(例えばJavascriptの)中に埋め込まれた攻撃者は、ユーザーがこのページを閲覧した場合、攻撃者の目的を達成するために、スクリプトは、ユーザーのブラウザ上で実行されます。たとえば、ユーザーのCookieを取得するために、トロイの木馬ウイルスを運ぶ、悪意のあるWebサイトに移動します。
第二に、分類は、脆弱性をXXS
技術を使用してさまざまな攻撃の脆弱性をXXS、3つのタイプがあります。
A、抜け穴のローカル使用を入力します。この脆弱性は、スクリプト自体にクライアントページに存在します。次のように攻撃プロセスは、次のとおりです。
ボブとアリスは、URLの悪意を持って構築されたウェブを送信します。
ボブはこのURLをクリックして表示します。
悪意のあるページJavascriptがHTMLページに抜け穴を開き、ボブのコンピュータにインストールしました。
これは、抜け穴HTMLページはJavascriptボブは、ローカルコンピュータで実行が含まれています。
ボブのコンピュータにボブが保持している権限でコマンドを実行することができアリス悪意のあるスクリプト。
B型、反射脆弱性:この脆弱性とタイプA多少似て、ユーザデータがなくてHTMLページに含まれる未検証された場合にページを生成するために、クライアント側のスクリプトを使用してWebサーバは、データのユーザーに提供することを除き、エンティティコードは、クライアントコードは、動的ページに注入することができるようになります。次のように攻撃プロセスがある:;
アリスは、多くの場合、このサイトはボブが所有している、Webサイトを参照してください。アリスボブのサイトには、ログインして、(例えば銀行口座情報など)の機密情報を格納するためのユーザ名/パスワードを使用して実行されています。
チャーリーボブのサイトは反射XSSの脆弱性の地面が含まれていました。
チャーリーエクスプロイトURLを書き、そしてボブにアリスからメールを送信するふり。
ボブのサイトにアリスに上陸した後、ブラウザのURLはチャーリー提供します。
それは直接、ボブのサーバーから同じであるかのように実行するためにアリスのブラウザで悪意のあるスクリプトのURLに埋め込まれました。
このスクリプトは、(、承認、クレジットカード情報などを考慮)機密情報を盗み、その後の全く気付いていないアリスの場合には、Webサイトをチャーリーための情報を送信します。
C、蓄積型の脆弱性を入力します。このタイプは最も広く使用されていると、自分のWebサーバーのセキュリティの脆弱性に影響を与える可能性があります。ハッカーは、すべてのユーザーがページがWebサーバーの管理者を含め、情報漏洩の可能性に直面しているアクセスするようにWebサーバにアップロードされたスクリプトを攻撃します。次のように攻撃プロセスは、次のとおりです。
ボブは、ユーザーが公開を閲覧/情報を公開することを可能にするウェブサイトを持っています。
チャーリーは、ボブのサイトはC型XSSの脆弱性があることを指摘しました。
チャーリー他のユーザーが読んだことが誘致するための熱いメッセージをリリースしました。
ボブや、アリスなどの他の人は、セッションクッキーやその他の情報はチャーリー盗まれるという情報を参照します。
個々のユーザへの直接的な脅威を入力して、オブジェクトタイプBとタイプCは、エンタープライズクラスのWebアプリケーションによって脅かされています。
三、XSSの防御
原則:お客様が入力したデータを信じていません。
注:攻撃コードは、<SCRIPT> </ SCRIPT>に限りませんで
1.重要なクッキーは、HTTPのみとマークされているので、JavaScriptのdocument.cookie文でクッキーを取得することはできません
2.私たちは、ユーザーがデータを入力することができます期待しています。例:テキストボックスの年齢、数字のみを入力することができる、と数字以外の文字は除外されます。
前記データ処理HTMLエンコード
4.フィルタ又は例えば、特別なHTMLタグを削除します。<script>、<iframe>の、&LT;のための<、&GT;のため>、&ためQUOT
5.フィルタJavaScriptイベントタグ、例えば "onclickの="、 "ONFOCUS" 等が挙げられます。
第四に、テストXSSの脆弱性
方法一:查看代码,查找关键的变量,客户端将数据传送给web服务器。一般通过三种方式Querystring,From表单,以及cookie。例如在ASP的程序中,通过request对象获取客户端的变量。
假如变量没有经过HTMLEncode处理,那么这个变量就存在一个XSS漏洞。
方法二:准备测试脚本
在网页中的textbox或其他能输入数据的地方,输入这些测试脚本,看能不能弹出对话框,能弹出的话,说明存在XSS漏洞。
在URL中查看有哪些变量通过URL把值传给了web服务器,把这些变量的值退换成我们测试的脚本。然后看我们的脚本是否执行。
方式三:自动化测试XSS漏洞
现在已经有很多XSS扫描工具了。实现XSS自动化测试非常简单,只需要用HttpWebRequest类。把包含XSS测试脚本,发送给web服务器,然后查看HttpWebResponse中,我们的XSS测试脚本是否已经注入进去了。