DOM破环和两个实验的复现

本文探讨了DOM破坏的概念,通过实例解释了如何利用HTML元素影响JavaScript。文章详细介绍了如何通过ID或name属性创建和访问DOM元素,并展示了如何在特定情况下执行任意JS。通过两个实验,阐述了DOM破坏在删除元素属性时的陷阱,如onerror处理程序的移动问题,以及如何利用SVG的onload事件来绕过循环。最后,讨论了DOMContentLoaded和load事件在DOM构建过程中的作用。
摘要由CSDN通过智能技术生成

 首先由图可知,我们给button的标签设置一个id=btn

然后在script中用window.btn来抓取button的id

 观察结果我们发现他将整个标签的内容都抓取了出来。

首先我们来了解一下DOM和window的关系,如果你在HTML中,设定一个有id的元素之后,在js中就可以直接操作,又由于js的作用域规则,就算直接用btn也可以,因为在当前的作用域找到时就会往上找,一路找到window

只需要记一个规范:不需要getE1ementById, 也不需要queryselector ,只要直接用与1d同名的变量去拿,就能得到。

在html 的说明文档中节选两个重点:
1. the value of the name content attribute for all embed, form, 1img , and object elements that have a non. empty name
content attribute
2. the value of the id content atribute for all HTML elements that have a non.empty id content atribute
也就是说除了id可以直接用window存取,embed, form, img和object这四个标签用name也可以操作:
由此我们总结出:我们是有机会通过HTML元素来影响JS的!
而我们可以把这个手法用在攻击上。

那这个利用HTML元素来影响js,就被我们理解成DOM破坏

那基于上面的例子,我们可以想一下如果是两个元素会怎么样;假设有以下代码

if (window. test1. test2) {
eva1(' ' +window. test1.test2)
}

如果我们想利用Dom破环的技巧来执行任意的js,需要解决两个问题:<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值