Dom型XSS
1.Dom简介
DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。通过DOM可以让脚本动态的访问、控制网页,通过Js去对网页进行修改,变化执行 才 产生的XSS漏洞。可以去B站看看这位大佬的讲解:https://www.bilibili.com/video/BV1ff4y1g7PA/?spm_id_from=333.788.recommend_more_video.8
Dom与反射的存储不同之处在于,Dom是将代码插入到本地浏览器的前端代码里面。而反射和存储是经过后端,并且反射后端遇到就会执行(看看解释型语言的原理),存储型也经过,但是会把数据持久性的存储到服务器上,有很多形式,比如文件、图片、数据库里面的数据等,然后等到加载的时候就会执行,所以危害性很大。
2.靶场(Dom型XSS)
1.输入后检查网页源代码
首先是将输入数据赋值给text,然后是调用上面的函数,函数的作用是取text的值,给a标签中的href,最后将值插到下面的href里面。所以说只需要构造闭合,然后写XSS语句执行即可。
输入:
思念变成海'><legend onmousemove="alert(1)" style=display:block>test</legend> #xss事件,可以多去了解下Dom事件
3.靶场(Dom型XSS-X)
1.查看网页源代码
和上面靶场差不多,只不过这次传参的方式是在URL:
而window.location.search是捕获JS通过GET请求的参数。
然后通过解码加split方法,获取传参的内容,赋值给变量xss,最后把xss给予a标签里面的href。所以方式还是一样,构造闭合即可。
思念变成海'><legend onmousemove="alert(1)" style=display:block>test</legend>
4.防御
1.过滤(危险的传参)
2.HTML实体化(html给编码,只有文本意义)
3.httponly (禁止JS代码获取Cookie)
- ie浏览器
- 让页面输出Cookie (探针文件 phpinfo()),一键化搭建的网站容易有探针。