DOM型XSS
DOM Based XSS从效果上来说也是反射型XSS,单独划分出来,是因为它的形成原因比较特别。
通过修改页面的DOM节点形成的XSS称之为DOM Based XSS,看如下代码:
<script>
function test(){
var str = document.getElementById("test").value;
document.getElementById("t").innerHTML="<a href='"+str+"'>testLink<>";
}
</script>
<div id="t"></div>
<input type="text" id="text" value=""/>
<input type="button" id="s" value="write" οnclick="test()"/>
在这里,write按钮的onclick事件调用了test()函数。而在test函数中,修改了页面的DOM节点,通过innerHTML把一段用户数据当做HTML写入到页面中,这就造成了DOM based XSS。
构造数据如下:
’ οnclick=alert(/XSS/) //
输入后,页面代码就变成了:
<a href='' οnclick=alert(/XSS/) //' >testLink</a>
第一个单引号闭合掉原本的单引号,然后插入一个onclick事件,最后用//注释掉第二个单引号。生成新的链接,脚本就被执行。
相当于
<a href='' οnclick=alert(/XSS/)>testLink</a>
另外,除了构造新事件,还可以闭合掉<a>标签,并插入一个新的HTML标签。

本文深入探讨了DOM型XSS攻击的原理,通过修改页面DOM节点注入恶意脚本,展示了具体的代码实例及如何利用构造数据触发攻击。
1395

被折叠的 条评论
为什么被折叠?



