基于 DOM 的 XSS
基于 DOM 的 XSS 是什么?
基于 DOM 的 XSS一种 XSS 变体,注入和执行完全发生在浏览器中,因为客户端 JavaScript 将未净化的数据写入危险接收点。
基于 DOM 的 XSS(也称 Type-0)是一种跨站脚本漏洞,其根本原因完全位于客户端代码中。可信源(如 location.hash、document.referrer、window.name、postMessage 或 localStorage)未经净化就传入危险的 DOM sink(如 innerHTML、document.write、eval 或 jQuery.html)。由于服务器从未接触到这些载荷,传统 WAF 和服务器日志难以发现该漏洞。防御措施包括使用安全 API(如 textContent)、在现代浏览器中启用 Trusted Types、部署严格的 CSP,以及使用能追踪从源到 sink 的污染数据流的代码分析工具。
● 示例
- 01
document.getElementById('out').innerHTML = location.hash.substring(1);
- 02
SPA 路由器使用 window.location 将未净化的 HTML 渲染到模板槽位。
● 常见问题
基于 DOM 的 XSS 是什么?
一种 XSS 变体,注入和执行完全发生在浏览器中,因为客户端 JavaScript 将未净化的数据写入危险接收点。 它属于网络安全的 攻击与威胁 分类。
基于 DOM 的 XSS 是什么意思?
一种 XSS 变体,注入和执行完全发生在浏览器中,因为客户端 JavaScript 将未净化的数据写入危险接收点。
基于 DOM 的 XSS 是如何工作的?
基于 DOM 的 XSS(也称 Type-0)是一种跨站脚本漏洞,其根本原因完全位于客户端代码中。可信源(如 location.hash、document.referrer、window.name、postMessage 或 localStorage)未经净化就传入危险的 DOM sink(如 innerHTML、document.write、eval 或 jQuery.html)。由于服务器从未接触到这些载荷,传统 WAF 和服务器日志难以发现该漏洞。防御措施包括使用安全 API(如 textContent)、在现代浏览器中启用 Trusted Types、部署严格的 CSP,以及使用能追踪从源到 sink 的污染数据流的代码分析工具。
如何防御 基于 DOM 的 XSS?
针对 基于 DOM 的 XSS 的防御通常结合技术控制与运营实践,详见上方完整定义。
基于 DOM 的 XSS 还有哪些其他名称?
常见的别称包括: Type-0 XSS, 客户端 XSS。
● 相关术语
- attacks№ 240
跨站脚本(XSS)
一种 Web 漏洞,攻击者可在其他用户浏览的页面中注入恶意脚本,使其在受害者浏览器中以该站点的来源身份运行。
- attacks№ 1107
存储型 XSS
一种持久化的跨站脚本漏洞,攻击者注入的脚本被保存到服务器,并在每位访问者的浏览器中执行。
- attacks№ 912
反射型 XSS
一种非持久化 XSS,攻击者控制的请求参数被立即反射到响应中,并在受害者浏览器中执行。
- appsec№ 214
内容安全策略 (CSP)
一种 HTTP 响应头,告诉浏览器允许加载哪些来源的脚本、样式、框架等内容,从而限制 XSS 与数据注入攻击的影响。
- vulnerabilities№ 869
原型链污染
JavaScript 漏洞,攻击者通过不可信输入修改 Object.prototype,向所有对象注入属性,从而改变应用行为甚至导致 RCE。
- appsec№ 773
输出编码
将不可信数据转换为特定输出上下文(HTML、JavaScript、URL、SQL、Shell)安全的形式,使其无法逃逸并被当作代码执行。
● 参见
- № 104盲打 XSS