XSSは、被害者は、そのブラウザで悪意のあるコードをページを訪問した際にインジェクション攻撃の種類は、ページ内に悪意のあるスクリプトコードを注入する攻撃です意味では、クロスサイトスクリプティング、すなわち、クロスサイトスクリプティング攻撃の略実行は、あなたはXSSはJavaScriptに限定されるものではなく、ことを強調する必要がありますが、また、フラッシュなどの他のスクリプト言語。
悪意のあるコードがサーバーに保存されているかどうかに応じて、XSSは、メモリ型と反射型XSS XSSに分けることができます。なぜならその特異性のDOM XSS型は、しばしばXSS基づいてDOMツリーである第三、に分割されます。彼らは特定の変数は、DOM型XSSを生成することで、フィルタまたは小切手に機能しない場合たとえば、サーバ機能などは、多くの場合、動的に生成されたHTMLページdocunment.boby.innerHtmlを使用しています。DOM型XSSのタイプは、それが反射型であってもよいし、記憶することができます。
反射型XSS(反射)
低いです
ソース
<?PHP ヘッダ( "X-XSS-保護:0")。 //任意の入力はありますか? (array_key_exists( "名前"、$ _GET)&& $ _GET [ '名前']!= NULL)の場合{ //フィードバックエンドユーザーのための エコー'こんにちは<PRE>'。$ _GET [ '名前']。'</ PRE>'; } ?>
直接コード名パラメータへの参照、および任意のフィルタリングおよび検査することなく、明白なXSS脆弱性を見ることができます。
開発します
中
ソース
<?PHP ヘッダ( "X-XSS-保護:0")。 //任意の入力はありますか? もし(array_key_exists( "名前"、$ _GET)&& $ _GET [ '名前']!= NULL){ //取得した入力 $名= str_replace( '<スクリプト>'、 ''、$ _GET [ '名前']) ; //エンドユーザーのためのフィードバック エコー"$ {名前}こんにちは<PRE> </ PRE>"; } ?>
これは、入力にstr_replace関数を使用するという考えに基づいて入力フィルタリング、ブラックリストは、<スクリプト> [削除]、この防御機構を簡単に迂回することができる上、ここで見ることができます。
開発します
①書き込みダブルバイパス
<sc<script>ript>alert(/xss/)</script>
②混乱バイパスケース
<ScRipt>alert(/xss/)</script>
高い
ソース
<?PHP ヘッダ( "X-XSS-保護:0")。 //任意の入力はありますか? もし(array_key_exists( "名前"、$ _GET)&& $ _GET [ '名前']!= NULL){ //入力を取得 $名を=にpreg_replace(「/<(.*)s(.*)c(.*) R I P T / I」、 ''、$ _GET [ '名前'])(*)(*)(*。); //エンドユーザーのためのフィードバック エコー"$ {名前}こんにちは<PRE> </ PRE>"; } ?>
あなたはハイレベルのコードもブラックリストフィルタ入力を適用し、見ることができる、にpreg_replace()関数は、正規表現の検索に使用され、ケースを混乱することはもはや有効ではバイパス、二重のバイパスを行うものではありませんこれは、交換してください。
開発します
タグやラベルはiframeなど、XSSコード注入の<script>タグを使用する方法はありませんしながら、しかしなどのjs SRCイベントIMG、体を介して悪質なコードを挿入することができます。
<IMG SRC = 1は、onerror =警告(/ XSS /)>
不可能
ソース
<?phpの //任意の入力はありますか? もし(array_key_exists( "名前"、$ _GET)&& $ _GET [ '名前']!= NULL){ //チェックアンチCSRFトークン checkToken($ _REQUEST [ 'user_token']、$ _SESSION [ 'session_token'] ' index.phpの」); //取得した入力 $名=はhtmlspecialchars($ _GET [ '名前']); //エンドユーザーのためのフィードバック エコー"$ {名前}こんにちは<PRE> </ PRE>"; } //トークンアンチCSRF生成 generateSessionTokenを(); ?>
事前に定義された関数はhtmlspecialchars&文字を使用して、不可能レベルのコードを見ることができ、」、」、<、> HTML要素としてブラウザを防ぐHTMLエンティティに変換。