從hi.baidu.com/monyer/blog/item/d0f5d8b48fc442758bd4b2a4.html這個可怕的XSS矢量在Internet Explorer中仍然是個問題嗎?
字符192是
<font face="xyz[0xC0]">not </font><font face=" onmouseover=alert(192) s=[0xC0]" >available</font>
將0xC0是2字節序列的32個第一字節中的一個(0xC0-0xDF)在UTF-8。所以當IE解析上面的代碼時,它會將0xC0和後面的引用看作一個序列,因此這兩對FONT元素將會以
"xyz[0xC0]">not </font><font face="
作爲FACE參數的值。第二個0xC0將啓動另一個2字節的序列作爲未引用的NOTEXIST參數值。由於引用後面有一個空格字符,所以3字節序列的第一個字節0xE0-0xEF,連同以下引號和一個空格字符將被視爲NOTEXIST參數的值。
本質上,某些字節表示UTF-8字符串中的3字節字符的開始。如果這些字節進入網頁,即使產生的三個字節不構成有效的UTF-8字符,IE也會佔用接下來的兩個字節。這可能會導致IE在HTML屬性中使用結尾引號,從而導致XSS風格的破壞。
這篇文章是關於IE6,所以我有兩個緊密耦合的問題:
- 這仍然是在IE的後續版本的問題嗎?
- 如果是這樣,是否有純粹的客戶端方法來避免它?換句話說,假設從服務器接收到「中毒」字符串,是否有什麼可以在客戶端完成以防止此漏洞?
@Karl我很欣賞編輯,但我試圖避免鏈接到該網站,因爲它似乎有點seed。。我不確定有關鏈接到網站的規則。你認爲它應該是鏈接(誠實的問題)? – ClosureCowboy 2011-05-08 15:54:37
頁面確實很多:)我不知道是否有任何規則,所以讓我們不要鏈接它。 – 2011-05-08 16:01:44
可能我不知道實際發生了什麼。但我在IE9的JSFiddle上試過這個,並沒有鼠標懸停。 – sdleihssirhc 2011-05-08 16:49:16