Skip to content

XSS 与 CSRF:脚本注入和跨站请求伪造的边界

主题边界

  • XSS 关注攻击者把恶意脚本带入可信页面执行;CSRF 关注浏览器在用户已登录状态下被诱导发起跨站请求。
  • 理解差异要从浏览器自动附带凭证和 DOM 执行环境两条线看。

机制与流程

  • XSS 的根源是把不可信输入当作可执行 HTML / JS / URL 使用,例如 innerHTML、危险模板、事件属性注入。
  • CSRF 的根源是浏览器会自动携带符合条件的 Cookie 或其他凭证向目标站点发请求,而服务端无法区分请求是否源于用户真实意图。
  • 防御 XSS 依赖输出编码、模板自动转义、CSP、危险 API 收敛;防御 CSRF 依赖 SameSite、CSRF Token、Origin/Referer 校验和敏感操作二次确认。

关键差异

  • XSS 一旦成功,常能直接窃取页面上下文中的敏感数据并代用户执行操作;CSRF 不需要读响应,只需要借用户身份发出请求。
  • 把 Token 放在 Authorization 头中可降低传统 Cookie CSRF 面,但不能替代 XSS 防护。

边界条件

  • 存储在 localStorage 的 Token 不能自动被第三方站点带上,因此不易受传统 CSRF 影响,但更容易在 XSS 中被读取。
  • 同站策略、SameSite 和预检并不是同一类安全机制,不能互相替代。

工程落点

  • 安全设计要先判断核心风险是脚本执行被劫持,还是身份凭证被滥用。
  • 很多真实事故是 XSS 与会话窃取联动,而不是某一个术语单独出现。

相关主题