DOM(Document Object Model)注入攻击
,也称为DOM型跨站脚本(DOM-based XSS, 或简称DXSS)
,是一种特殊的跨站脚本攻击方式。不同于传统的存储型XSS
或反射型XSS
,DOM注入攻击的关键在于客户端JavaScript
动态修改了网页的DOM结构
时引入了不受信任的数据。
在DOM注入攻击中,恶意数据不是由服务器端直接输出到HTML响应
中的,而是源自于服务器提供的数据,并在浏览器端执行的JavaScript代码
中被处理。当应用程序获取了用户输入的数据后,这些数据可能被用于更新页面内容,例如通过innerHTML
、document.write()
、location.hash
等DOM API进行操作。
如果这些操作没有对用户输入的数据进行适当的验证
和转义
,攻击者就可以通过构造特定的输入来修改或控制页面的DOM结构
,从而执行任意的JavaScript代码
,进而实现窃取用户信息、模拟用户行为等恶意目的。
var param = window.location.search.substr(1); // 获取查询字符串
document.getElementById('someElement').innerHTML = param; // 将查询字符串设置为元素内容
# 攻击者可以构造如下链接诱骗用户点击:
http://victim.com/page.html#"><script>alert(document.cookie)</script>
# 当用户访问该链接时,由于没有对param值做安全过滤,
# 这段JavaScript代码会被执行,显示用户的cookie信息。