• 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)

  • 相关阅读:
    ASP.NET 2.0的页面缓存功能介绍
    我对针对接口编程的浅解
    接口和抽象类的区别
    面向接口编程到底有什么好处
    泛型编程是什么
    方法的重写、重载及隐藏
    基于事件的编程有什么好处
    Socket Remoting WebService对比
    技术讲座:.NET委托、事件及应用兼谈软件项目开发
    ny589 糖果
  • 原文地址:https://www.cnblogs.com/leaf526/p/3619195.html
Copyright © 2020-2023  润新知