前端安全:XSS、CSRF 与 CSP 实战
梳理前端最常见的三大安全威胁 XSS、CSRF 与 CSP 防御,附可落地的防护清单。
前端安全常被忽视,直到被攻击才追悔莫及。本文梳理三大核心威胁与防御手段。
XSS:跨站脚本攻击
XSS 是攻击者把恶意脚本注入页面,在用户浏览器执行,窃取 Cookie、篡改页面。
防御:
- 永远不要用
innerHTML插入不可信内容,优先用textContent; - 对任何用户输入做转义;
- 使用框架的默认转义(React/Vue 的插值默认安全);
- 谨慎使用
dangerouslySetInnerHTML,确需使用时先做净化(如 DOMPurify)。
CSRF:跨站请求伪造
CSRF 诱导用户在已登录状态下,对目标站点发起非本意的请求。
防御:
- 使用 CSRF Token:请求带服务端签发的令牌,攻击者无法伪造;
- 校验请求来源(Origin/Referer);
- 关键操作(转账、改密)二次验证;
- 配合
SameSiteCookie 属性,限制跨站携带。
CSP:内容安全策略
CSP 是浏览器提供的一道声明式防线,通过响应头告诉浏览器哪些资源可信:
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-xxx'
它能在源头阻止 XSS 注入脚本的执行,是纵深防御的关键一层。
防护清单
- 是否对用户输入做转义/净化?
- 是否使用了 CSRF Token 与
SameSite? - 是否配置了 CSP 响应头?
- 敏感数据是否避免存 localStorage(XSS 可读)?
结语
安全是纵深防御:编码习惯 + 框架机制 + 浏览器策略层层叠加。没有单点银弹,但把清单做实,就能挡住绝大多数攻击。