当前位置: 首页 > news >正文

海口 网站制作公司响应式网页模板下载

海口 网站制作公司,响应式网页模板下载,营销型网站是什么样的,免费制作微信小程序软件文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.什么是DOM破坏 在HTML中,如果使用一些特定的属性名(如id或name)给DOM元素命名,这些属性会在全局作用域中创建同名的全局变量,指向对…

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

一.什么是DOM破坏

        在HTML中,如果使用一些特定的属性名(idname)给DOM元素命名,这些属性会在全局作用域中创建同名的全局变量,指向对应的DOM元素。这种行为虽然有时可以方便地访问元素,但也会引发一些潜在的问题,特别是在元素的属性名与JavaScript全局对象的属性名冲突时,可能会破坏正常的DOM操作或脚本运行。这种现象被称为DOM破坏(DOM clobbering)。

二.DOM破坏的原理

  1. 全局变量自动创建

    • 当DOM元素拥有idname属性时,浏览器会自动在全局作用域(即window对象上)创建一个同名的属性,指向该DOM元素。例如,<div id="foo">会创建一个window.foo属性,指向这个div元素。
  2. 属性名冲突

    • 如果元素的idname属性与已有的JavaScript全局对象或内置属性名冲突,会覆盖原有的JS代码。例如,如果有一个<input id="location">,它会覆盖window.location,这会导致脚本中试图访问window.location时得到<input>元素,而不是期望的Location对象。
  3. 影响脚本执行

    • 由于全局变量被覆盖,脚本在访问这些全局变量时会得到意外的结果,导致错误或不可预测的行为。

举个例子 1:

<body>
<img id="x">
<img name="y">
<script>
console.log(x)
console.log(y)
console.log(document.x)
console.log(document.y)
console.log(window.x)
console.log(window.y)
</script>
</body>

 运行结果:

<img id="x">
<img name="y">
<img id="x">
undefined
<img id="x">
<img name="y">

上述案例中,无需通过 getElementById 获取<img>标签,使得开发者更快速的获取DOM节点。

案例 2:

        上述案例中,在新创建的<div>标签中插入一个<img>标签并将该<div>标签插入到<body>中,然而当我们利用document.cookie函数输出网页的cookie时,输出的结果却由空值改变成<img>标签,造成这一现象的原因:元素的idname属性与已有的JavaScript全局对象或内置属性名冲突,会覆盖原有的JS代码。

最后通过案例3来验证一下:

​​​​​​​

 案例3中,JS代码想要在<body>标签中插入新建的<div>标签,然而执行时却显示找不到函数document.body.appendchild 的执行方法,报错原因无非就是这段JS代码被<img>标签所覆盖,浏览器执行的实际代码为:

<img id-"appendChild">(div)

        通过案例1,2,3,不难发现这种行为虽然有时可以方便地访问元素,但也会引发一些潜在的问题,特别是在元素的属性名与JavaScript全局对象的属性名冲突时,可能会破坏正常的DOM操作或脚本运行。这种现象被称为DOM破坏。

        在黑客的攻击行为中,往往会利用DON破坏的特点,构造一个含有恶意脚本的恶意标签从而与已有的JavaScript全局对象或内置属性名冲突,覆盖原有的JS对象,输出恶意标签

        说到这里可能会有疑惑,恶意标签按照原样输出有什么用?回答是:当然没用啦,黑客通常会利用一些办法将输出的标签转换为字符串类型从而使得这些恶意标签与某些执行参数为字符串类型的JS代码的属性名冲突时能够被执行。

        在HTML标签中<a>标签与<textarea>标签自带被调用时以字符串形式输出的属性,因此我们可以通过如下案例深入了解一下:

   上述案例中存在一个防御框架 DOMPurify,因此想要成功实现攻击只能利用setTimeout函数,该函数将第一个字符串类型的参数ok延迟两秒执行,利用此执行执特点,再配合DOM破坏可以构造如下恶意标签 

<a id="ok" href="tel:alert(1)">

 上述恶意pyload通过构造与setTimeout函数参数名相同的标签id,当setTimeout函数被调用时会查找HTML中id-ok的字符串类型的标签,而<a>标签被调用时正好为字符串形式,因此该函数执行时会调用黑客构造的恶意标签<a>,同时执行当中的恶意脚本(这里若使用javascript会被防御框架过滤,因此利用该框架中1白名单函数tel,也可以执行JS脚本)。

  


总结

http://www.yayakq.cn/news/471222/

相关文章:

  • 毕设给学校做网站重庆推广网站排名
  • wordpress不显示网站标题wordpress怎么开发
  • 学校网站开发必要性与意义英文网站建设方法
  • 把网站提交给百度怎么在自己的网站做淘宝客
  • 哪个博客可以做单页网站怎么安装网站源码
  • 网站项目报价单模板免费下载做网站还有钱赚吗
  • 高端网站建设 aspx淄博网站建设卓迅网络
  • 如何利用网站做demo做一个中文域名购物网站要多少钱
  • 做网站怎么找客户联系方式展架设计制作图片
  • 中山网站开发公司福州网站制作有限公司
  • 南阳微网站开发阿里云服务器创建网站吗
  • 网站项目建设策划书流程网站内容维护外包协议
  • 百度上面做企业网站怎么做广州新闻头条最新消息
  • 慈溪市建设局网站做建材加盟什么网站好
  • 怎么给网站做绿标公司做网站费用和人员配备
  • 突出什么 加强网站建设莱芜网络公司平台
  • 鲜花团购网站建设什么是seo关键词
  • 怎么查看网站disallowwordpress文章相册形式
  • 合肥网站设计 goz建设银行官方网站登
  • 做网站需要用什么语言开发网站首页页面设计
  • 天河建设网站设计防城港做网站
  • 网站上的地图导航怎么做微分销商城网站建设
  • 网站简历导出iis运行wordpress
  • h5模板网站有哪些网页qq登录界面
  • 企业网站策划案j2ee大型网站开发框架
  • 网站维护方式查询网站备案显示划横线
  • c 创建一个网站怎么做做教育业网站
  • 做的好的音乐网站的特点怎么做网站里的资讯
  • 做平面的网站四川省建设厅网站官网
  • 苏州网站建设学费管理咨询项目