2016-03-25 16 views
-2

は、なぜ私はoption.textは()私はオプションのテキストでエンコードされたバージョン<code>(&lt;script&gt;alert(&#x27;xss&#x27;);&lt;/script&gt;)</code>を持っているのに、私の例ではフィドル

$(function() { 
 
     $('#users').each(function() { 
 
     var select = $(this); 
 
     var option = select.children('option').first(); 
 
     select.after(option.text()); 
 
     select.hide(); 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="users" name="users"> 
 
    <option value="bad">&lt;script&gt;alert(&#x27;xss&#x27;);&lt;/script&gt;</option> 
 
</select>

に警告ボックスを取得していますXSSの脆弱である??

誰かが私が何をしないのです教えてtext.Can私はオプションでHTMLをエンコードしているので、私は警告を示す防ぐためにしようとしていますか?私はオプションのテキストにHTMLをエンコードしている

https://jsfiddle.net/hf1fbhmg/

+2

質問は、特定の問題やエラーと、それを再現するために必要な最短のコードを希望の動作を含める必要があります。** hiddingによってjsfiddle制限を回避する(存在しない)のコードのブロック内のリンクを取得する質問自体** – Quentin

+0

に私はリンクを挿入する方法を知らなかった無無 –

+0

ではありません。謝罪する – user3501278

答えて

0

これはテキスト表示(text())を取得しているので問題ありません。 (たとえHTML表現を取得していたとしても、ブラウザでDOMのテキストをHTMLに変換するルールは、とにかく予期しない結果をもたらす可能性があります)。

はその後、select.after(that_text);を使用しています。 HTMLのような文字列をafterに渡すと、jQueryはそれをHTMLとして扱います。明示的にテキストとして扱う必要があります。例えば

:(「?なぜ、このコードが動作していない」)、デバッグの助けを求めている

select.after(
    jQuery("<span />").text(that_text) 
); 
+0

@JeremyBanks - それは私が驚くべきおよび/またはひどく文書を見つけることで物事の束を持っているが...とはいえ、これはその一つではありません。 – Quentin

+0

「あなたがHTML表現を取得した場合であっても、ブラウザが戻ってHTMLにDOMでテキストを変換する方法のためのルールは、とにかくあなたに予期しない結果を与えるかもしれない」 - >どのように私はこれを防ぐのですか?それは私がそれを理解することができないものです。 – user3501278

+0

@ user3501278 - 私が言ったように、それは落ち着きを持って来るものなので、試してはいけません。代わりに私が推奨したことをしてください。 – Quentin

関連する問題

 関連する問題