2026年5月27日 01:03

什么是 XSS 攻击?

XSS(跨站脚本攻击)的本质是攻击者把自己的 JS 代码注入到你的网页里,在真实用户的浏览器上执行。能做的坏事包括:偷 cookie、篡改页面内容、劫持用户操作。

三种类型:

  • 存储型:恶意脚本存到了服务器(数据库、评论、留言),用户访问页面时被返回执行。危害最大,不需要诱导点击。
  • 反射型:恶意脚本放在 URL 参数里,服务器直接拼到响应页面中。需要诱导用户点击构造好的链接。
  • DOM 型:纯客户端问题——前端 JS 把 URL 参数或用户输入直接用 innerHTML 插到 DOM 里,没有经过后端。

防御三件套:

  1. 输出转义:所有用户输入在输出到 HTML 前做转义(<&lt; 等),不信任任何用户数据
  2. CSP(内容安全策略):HTTP 头告诉浏览器只允许执行特定来源的脚本
  3. HttpOnly Cookie:关键 cookie 标记 HttpOnly,JS 读不到,即使被 XSS 也偷不走

追问

XSS 和 CSRF 有什么区别?

XSS 是在受害者浏览器里执行恶意 JS,利用的是对网站的信任。CSRF 是诱导受害者发请求到已登录的网站,利用的是网站对浏览器的信任

CSP 怎么配置?

Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-xxx'。核心思想:白名单机制,不在白名单里的脚本一律不执行。但 CSP 配置需要充分测试,容易把正常功能挡掉。

富文本编辑器怎么防 XSS?

不能用简单的转义(会把格式也干掉)。正确做法:白名单过滤标签和属性(如 DOMPurify),只允许 <b><i><a> 等安全的标签,移除 onclickonerror 等事件处理器和 javascript: 协议。

标签:前端Web安全