2011-06-23 10 views
4

私はWebGoatエクササイズを見ていました.1つの質問のために、imgタグを使用してJavaScriptアラートを作成するようにお願いしました。XSS経由のimgタグ、冗長セミコロン?

彼らのソリューションは、このようにある:

その解決を見てみると
<img src=x onerror=;;alert('XSS') /> 

、私はsemicolnsは、実際の警告の前に必要である理由を2つ(一つだけではなく)だろうか?

+5

これは必要ありません。私の最高の推測(と専門家ではない、それほど多くない)彼らは、javascriptコードの不思議な形の一部がいくつかの検出方法を捨てるかもしれないと思うということです。これが事実なら、私はそれが誰かを欺くことを疑う。 – davin

答えて

1

実際にセミコロンは必要ありません私はFF5とChromeの最新のW/Oセミコロン同じタグをテストし、彼らの両方がこの

<img src=x onerror=;;alert('XSS') /> 
<img src=x onerror=alert('XSS') /> 
<img src="x" onerror="alert('XSS')" /> 

でアラートを送信する私は、彼らが停止しようとしていると思いますONERROR最初のセミコロンでのイベントは、その後、警告

でのイベントのうち出力偽のコードでは、私はこの

<img src=x onerror=alert('eventfire');;alert('XSS') /> 

を試してみましたが、それは内部の両方のアラートを囲みますそのイベントは、2番目のアラートをイベントスコープ外で実行していません。

答え?セミコロンなしで同じことをしているようです(おそらく、htmlをよく解析してイベントの範囲外の警告を実行する古いブラウザの場合でしょうか?)