Entry № 386
基于 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 的防御通常结合技术控制与运营实践,详见上方完整定义。
基于 DOM 的 XSS 还有哪些其他名称?
常见的别称包括: Type-0 XSS, 客户端 XSS。