xss分为反射型,存储型,dom based xss 前两者很好理解 对于dom based xss有点绕 记录下。
常见的xss都是 客户端输入直接输出在html 假如没过滤存在js代码 将会被执行。
而dom based xss 它是不一样的。
下面用实例讲解
<script>
function a(){
var str=document.getElementById('test').value;
document.getElementById("t").innerHTML="<a href='"+str+"'>testlink</a>";
}
</script>
<div>
<input type="test" id='test' value=""/>
<a href="" id='t'>test</a> <br/>
<input type="button" id="s" value="write" onclick='a()'/>
</div>
会编程的 都可以看懂这是什么意思。
事实上, DOM based xss 是从javascript中输出数据到html页面里。而存储型,反射型,都是针对服务器应用输出到html页面的xss漏洞。