• DOM Based XSS介绍


    DOM Based XSS: 通过修改页面的DOM节点形成的XSS。

    实例:点击write按钮后,会在当前页面插入一个超链接,其地址为文本框的内容。

    在test()函数中,修改了页面的DOM节点。通过innerHTML把一段用户数据当做HTML写入到页面中,这就造成了DOM Based XSS。

     1 <!DOCTYPE html>
     2 <html>
     3 <body>
     4 
     5 <script>
     6 function test(){
     7     var str = document.getElementById("test").value;
     8     document.getElementById("t").innerHTML="<a href ='"+str+"'>testLink</a>";
     9 
    10 }
    11 </script>
    12 
    13 <div id = "t"></div>
    14 <input type = "test" id = "test" value = ""/>
    15 <input type = "button" id = "s" value = "write" onclick="test()"/>
    16 
    17 </body>
    18 </html>

    构造如下数据输入: ' onclick=alert(/xss/) //

    此时第8行页面代码变成:document.getElementById("t").innerHTML= "<a href = ' ' onclick=alert(/xss/) // '>testLink</a>";

    首先用一个单引号闭合掉href的第一个单引号,然后插入一个onclick事件,最后再用注释符”//" 注释掉第二个单引号。之后点击这个新生成的链接,脚本将被执行:

    另一种方式:除了构造一个新事件外,还可以选择闭合掉<a>标签,并插入一个新的HTML标签,如输入: ' ><img src=# onerror=alert(/xss2/) />< '

    页面代码变成了: 

    document.getElementById("t").innerHTML="<a href =' '>< img  src=# onerror = alert(/xss2/) />< '' >testLink</a>";

    点击write按钮,脚本被执行:

    (使用 onerror 事件是一种老式的标准的在网页中捕获 Javascript 错误的方法。http://www.w3school.com.cn/js/js_onerror.asp)

  • 相关阅读:
    深入A标签点击触发事件而不跳转的详解
    js、css、html判断浏览器的各种版本
    深入理解this对象
    背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)
    解决ie6支持最大高度最小高度的方法
    js点击更多显示更多内容效果
    artdialog关闭弹出窗口
    (巧用)事件代理
    CSS3盒模型display:-webkit-box;的使用
    文件上传input type="file"样式美化
  • 原文地址:https://www.cnblogs.com/leaf526/p/3619195.html
Copyright © 2020-2023  润新知