我的网站遭受过多次XSS攻击。以下HTML片段是攻击者注入的XSS向量:
<a href="mailto:">
<a href=\"http://www.google.com onmouseover=alert(/hacked/); \" target=\"_blank\">
<img src="http://www.google.com onmouseover=alert(/hacked/);" alt="" /> </a></a>
看起来脚本不应该执行,但是使用IE9的开发工具,我能够看到浏览器将HTML转换为以下内容:
<a href="mailto:"/>
<a onmouseover="alert(/hacked/);" href="\"http://www.google.com" target="\"_blank\"" \?="">
</a/>
经过一些测试,结果证明“使”onmouseover“属性”生效“,但我不知道为什么。有谁知道为什么这个向量成功了?
答案 0 :(得分:5)
总结评论: 在引号前粘贴一个字符,将引号转换为属性值的一部分,而不是标记值的开头和结尾。 这也适用:
href=a"http://www.google.com onmouseover=alert(/hacked/); \"
HTML允许无引号属性,因此它成为具有给定值的两个属性。