XSS-DOM

DOM型XSSの脆弱性は、DOMドキュメントオブジェクトモデルに基づいています

ツリー内のすべてのノードは、HTML DOMを通じてJavaScriptを介してアクセスすることができます。すべてのHTML要素(ノード)は変更することができます。また、ノードを作成または削除することができます。(引用W3C)

jsのコードは、このような脆弱性XSS-DOMを作成し、DOMツリーに埋め込むことができるので

 

低いです

<?PHPの

ノー保護、何でも行きます
 
?>

フロントを直接見ませPHPコードのありません、

ペイロード構造

デフォルト = <スクリプト>警告( 'XSS')</スクリプト

成功の実装

 

<?PHP 

// 任意の入力はありますか?
もしarray_key_exists( "デフォルト"、$ _GET!)&& IS_NULL$ _GET [ 'デフォルトの' ])){
     $デフォルト = $ _GET [ 'デフォルトの' ]; 
    
    #は、スクリプトタグを許可しない
    場合stripos$のデフォルト、 "<スクリプト")==!){
         ヘッダー( "場所:デフォルト=英語?" );
        終了; 
    } 
}

?>

striposは、最初の出現の検索文字列内の文字の位置を見つけるために機能します

$のデフォルトは<スクリプト、デフォルト?デフォルト=英語を発生した場合

私たちは、JavaScriptの擬似プロトコルで使用することができます

デフォルト = </オプション> </ select>の<a href="javascript:alert('xss')">テストする</a>

 

高い

<?PHP 

// 任意の入力はありますか?
もしarray_key_exists( "デフォルト"、$ _GET)&&!IS_NULL$ _GET [ 'デフォルトの' ])){ 

    ホワイトリスト許容言語を
    切り替える$ _GET [ 'デフォルトの' ]){
         場合 "フレンチ":
         ケース「の英語「:
         ケース『ドイツ』:
         ケース『』スペイン語:
             OK 
            ブレークデフォルトヘッダ( "場所:);
            終了; 
    } 
}

?>

switch文は、対応する結果を選出し、他のデフォルトは英語です

ペイロード#がサーバーに送信されません後にURLバーに文字が、ホワイトリストをバイパス実現するため、

デフォルト =英語の<script>警報(/ XSS /)</スクリプト>

 

 

不可能

<?PHPの

#は何もする必要はありません、protctionクライアント側で処理
 
?>

あなたは、クライアントプロセスを保護するために何かをする必要はありません

テスト入力の<script>のアラート( 'XSS')</スクリプト>

URL符号化は、それによってコードJSの実行を防止する、解釈され

 

おすすめ

転載: www.cnblogs.com/gaonuoqi/p/11388985.html