zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    input文本框输入限制(正则表达式)
    SQL Server通用型分页存储过程
    简单易学的数据图表
    HTML中input文本框只读不可编辑的方法
    SQL添加外键约束的方式
    +1 也要睁着眼
    博客园的自定义皮肤
    网站收集整理
    jQuery extend方法介绍
    HTML5本地存储
  • 原文地址:https://www.cnblogs.com/leaf526/p/3619195.html
Copyright © 2011-2022 走看看