eudaimonia-Whiplashmuse

基本漏洞原理及防御(3)-DOM XSS

Toretto·2022-03-16 21:18·353 次阅读

基本漏洞原理及防御(3)-DOM XSS

DOM型XSS:

DOM:文档对象模型,是页面将元素以为对象的树状呈现的一种模型,以便于javascript组织处理。

每个页面都有很多的元素,当访问页面时,会创建一个顶级的文档对象,后续的元素则以树状排列为其余文档对象,各个对象有自己的属性等等。

而JS脚本修改页面则是通过查找树形文档对象模型,然后修改其属性来操作页面的。也就DOM模型。

所以也就是说JS脚本可以通过DOM来动态的修改页面,整个过程都是在浏览器端实现的,或者说前端,没有到达服务器,或是数据库。

而修改页面的这个接口,也就是对象属性。

利用原理:攻击者利用一些需要赋值的对象属性,来传入恶意脚本,从而当浏览器利用DOM进行新页面渲染的时候,执行我们传入的恶意操作。

常见的可利用的属性为:innerHTML,这个属性使用很多而且是可以被赋值的,所以常常出现安全问题。

然后是JS经常使用的DOM内置的location来传入用户的输入。

流程:攻击者传入带有参数的url,浏览器解析url,获得参数。然后浏览器调用DOM,改写属性来动态调整页面,这个过程也叫渲染。然后返回调整后的页面。在这一流程中,攻击者将脚本代码作为参数传入,就会利用DOM调用改写属性,从而执行恶意操作。

这叫做基于DOM的XSS。

此处如果,传入的参数先进入服务器,存入数据库,然后再被返回到本地浏览器做解析,再调用DOM渲染,执行恶意操作。则称为DOM存储型XSS。

所以是否是DOMXSS基于最终执行代码时,是否利用DOM接口。

 防御:输入端做好特殊字符的转义输出端先进行编码,如输出到HTML则进行HTML编码、输出到JS则进行JS编码

posted @   mu3e  阅读(353)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示