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

应用软件安全编程--17预防基于 DOM 的 XSS

DOM型XSS从效果上来说也属于反射型XSS,由于形成的原因比较特殊所以进行单独划分。在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object 文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过 JS 脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过 DOM 来动态修改页面内容,从客户端获取 DOM 中的数据并在本地执行。当应用程序的客户端代码将不受信的参数直接用于动态更新页面的 DOM 节点,应用程序将易于受到基于DOM 的XSS攻击。

对于预防基于DOM的XSS的情况,示例给出了不规范用法(javascript 语言)示例。

示例:<script)function           test(){var str = document.getElementByld("text").value;document.getElementByld("test").innerHTML="(a      href=""+str+")testLink(/a)";</script)<div              id="test"></div><input   type="text"id="text"   value=""/><input  type="button"  value="write"  onclick="test()"/>

上面的JavaScript 代码片段可从元素 input 中读取 text信息,并将其显示给用户。

在这里,'write'按钮的onclick 事件调用了 test()方法,而该函数直接引用用户输入的值修改页面 的 DOM  节点,当用户输入οnclick=alert(/xss/)//,应用程序将受到基于DOM  的 XSS 攻击。

为了避免基于Dom 的 XSS 攻击,建议采用以下方式进行防御:

a) 与预防反射型XSS 相同,对用户的输入进行合理验证(如年龄只能是数字),对特殊字符(如 く、〉、、"以及<script〉、javascript 等)进行过滤。

b) 与预防反射型 XSS 相同,根据数据将要置于HTML上下文中的不同位置(HTML   标签、HTML 属性、JavaScript脚本、CSS、URL), 对所有不可信数据进行恰当的输出编码。

c) 与预防反射型 XSS 相同,设置 HttpOnly 属性。

http://www.lryc.cn/news/231586.html

相关文章:

  • 【FastCAE源码阅读9】鼠标框选网格、节点的实现
  • 【ArcGIS处理】行政区划与流域区划间转化
  • Session、Token、Jwt三种登录方案介绍
  • Linux操作系统使用及C高级编程-D5Linux shell命令(进程管理、用户管理)
  • 【TDSQL-PG数据库简单介绍】
  • 【文件包含】metinfo 5.0.4 文件包含漏洞复现
  • 差分信号的末端并联电容到底有什么作用?
  • pandas教程:GroupBy Mechanics 分组机制
  • 通过右键用WebStorm、Idea打开某个文件夹或者在某一文件夹下右键打开当前文件夹用上述两个应用
  • Android 10.0 framework层设置后台运行app进程最大数功能实现
  • 如何快速找到华为手机中下载的文档
  • iceoryx(冰羚)-Architecture
  • LeetCode2-两数相加
  • css 灰质彩色的边框
  • OpenCV实现手势音量控制
  • pytorch 深度学习之余弦相似度
  • Postman的常规断言/动态参数断言/全局断言
  • ruoyi若依前端请求接口超时,增加响应时长
  • 贪吃蛇小游戏
  • cocos----1
  • 第十九章绘图
  • rpmbuild 包名 version 操作系统信息部分来源 /etc/rpm/macros.dist
  • 【Linux专题】SFTP 用户配置 ChrootDirectory
  • openssl+ DES开发实例(Linux)
  • 结构体几种实用的用法
  • React Native 源码分析(四)—— TurboModules JSI通信机制
  • 【C#学习】ToString() 格式化数值
  • install YAPI MongoDB
  • 大数据Doris(二十三):取消导入与其他导入案例参考
  • SQL-LABS