存储型 XSS
存储型 XSS 是什么?
存储型 XSS一种持久化的跨站脚本漏洞,攻击者注入的脚本被保存到服务器,并在每位访问者的浏览器中执行。
存储型 XSS(也称持久型 XSS)发生在应用接收不受信任的输入后,将其存入数据库、文件系统或日志,并在后续未经恰当输出编码即渲染到 HTML 中。由于负载存放在服务器上,每个查看受影响页面的用户都会自动执行该脚本,因此它是危害最严重的 Web 漏洞之一。常见目标包括评论框、用户资料、商品评价以及显示日志条目的管理后台。防御方法包括基于上下文的输出编码、严格的内容安全策略、输入校验,以及 DOMPurify 等净化库。
● 示例
- 01
博客评论中包含 <script>fetch('/api/me').then(...)</script> 并在每位读者浏览器中运行。
- 02
攻击者将载荷写入个人资料姓名,在列出用户的管理面板中触发。
● 常见问题
存储型 XSS 是什么?
一种持久化的跨站脚本漏洞,攻击者注入的脚本被保存到服务器,并在每位访问者的浏览器中执行。 它属于网络安全的 攻击与威胁 分类。
存储型 XSS 是什么意思?
一种持久化的跨站脚本漏洞,攻击者注入的脚本被保存到服务器,并在每位访问者的浏览器中执行。
存储型 XSS 是如何工作的?
存储型 XSS(也称持久型 XSS)发生在应用接收不受信任的输入后,将其存入数据库、文件系统或日志,并在后续未经恰当输出编码即渲染到 HTML 中。由于负载存放在服务器上,每个查看受影响页面的用户都会自动执行该脚本,因此它是危害最严重的 Web 漏洞之一。常见目标包括评论框、用户资料、商品评价以及显示日志条目的管理后台。防御方法包括基于上下文的输出编码、严格的内容安全策略、输入校验,以及 DOMPurify 等净化库。
如何防御 存储型 XSS?
针对 存储型 XSS 的防御通常结合技术控制与运营实践,详见上方完整定义。
存储型 XSS 还有哪些其他名称?
常见的别称包括: 持久型 XSS, 二类 XSS。
● 相关术语
- attacks№ 240
跨站脚本(XSS)
一种 Web 漏洞,攻击者可在其他用户浏览的页面中注入恶意脚本,使其在受害者浏览器中以该站点的来源身份运行。
- attacks№ 912
反射型 XSS
一种非持久化 XSS,攻击者控制的请求参数被立即反射到响应中,并在受害者浏览器中执行。
- attacks№ 347
基于 DOM 的 XSS
一种 XSS 变体,注入和执行完全发生在浏览器中,因为客户端 JavaScript 将未净化的数据写入危险接收点。
- appsec№ 214
内容安全策略 (CSP)
一种 HTTP 响应头,告诉浏览器允许加载哪些来源的脚本、样式、框架等内容,从而限制 XSS 与数据注入攻击的影响。
- appsec№ 773
输出编码
将不可信数据转换为特定输出上下文(HTML、JavaScript、URL、SQL、Shell)安全的形式,使其无法逃逸并被当作代码执行。
- appsec№ 538
输入校验
在应用处理数据前,服务端检查所有不可信输入是否符合预期的类型、长度、范围、格式和取值集合。
● 参见
- № 104盲打 XSS