跨站脚本攻击(XSS)
字数 868 2025-11-13 00:13:52
跨站脚本攻击(XSS)
-
基础概念
跨站脚本攻击是一种常见于网页应用的安全漏洞。攻击者通过向网页中注入恶意脚本代码,当其他用户访问该页面时,脚本会在其浏览器中执行,从而窃取用户数据、篡改页面内容或进行其他恶意操作。XSS 的核心问题在于网站未对用户输入的内容进行充分验证和转义。 -
攻击原理与分类
XSS 可分为三类:
- 反射型 XSS:恶意脚本作为请求参数发送到服务器,服务器未处理直接返回给浏览器执行。例如,用户点击伪装后的链接触发攻击。
- 存储型 XSS:恶意脚本被永久存储在服务器数据库中,当其他用户访问包含该内容的页面时触发(如论坛评论区)。
- DOM 型 XSS:攻击通过修改页面的 DOM 结构实现,不依赖服务器响应,完全在客户端发生。
- 攻击步骤示例
以反射型 XSS 为例:
- 攻击者构造一个包含恶意脚本的 URL(如
http://example.com/search?q=<script>alert('XSS')</script>)。 - 用户被诱导点击该链接,服务器将未处理的参数返回至页面。
- 用户的浏览器执行脚本,可能导致 Cookie 被盗或页面被重定向。
- 防御机制
- 输入验证:对用户输入进行严格过滤,拒绝包含脚本标签的内容。
- 输出转义:将特殊字符转换为 HTML 实体(如
<转义为<)。 - 内容安全策略:通过 HTTP 头部的
Content-Security-Policy限制脚本来源。 - HttpOnly Cookie:防止通过 JavaScript 窃取敏感 Cookie。
-
实际影响与案例
XSS 可导致用户会话劫持、钓鱼攻击、恶意软件传播等。例如,2015 年 eBay 的存储型 XSS 漏洞允许攻击者在商品页面植入恶意脚本,影响数百万用户。 -
进阶知识:现代前端框架的防护
React、Vue 等框架内置了 XSS 防护机制,例如自动转义插值内容。但开发者仍需避免使用dangerouslySetInnerHTML或v-html等危险 API。