跨站攻击与防御(XSS、CSRF)
Web 项目中最常见的两种安全漏洞是 XSS 和 CSRF。本页将讲解它们的原理、危害与防御方案。
🔐 XSS(跨站脚本攻击)
💡 原理
攻击者在网页中插入恶意 JavaScript,诱导用户执行,达到窃取数据或控制页面的目的。
💣 示例:
<!-- 用户输入内容未经过处理直接渲染 -->
<p>评论内容:<script>alert('被攻击了')</script></p>
✅ 防御方法
方法 | 描述 |
---|---|
输出转义 | 对用户输入进行 HTML 编码 |
CSP 策略 | 限制可加载的脚本来源 |
禁止内联脚本 | 避免使用 dangerouslySetInnerHTML |
📦 React 安全示例
// 安全:React 自动转义
<p>{userComment}</p>
// 不安全:允许原样插入脚本
<p dangerouslySetInnerHTML={{ __html: userComment }} />
🎭 CSRF(跨站请求伪造)
💡 原理
攻击者诱导用户在已登录状态下发起未授权请求,例如偷偷提交表单或发送转账请求。
💣 示例攻击代码
<!-- 用户访问此页面,浏览器自动携带 cookie -->
<img src="https://yourbank.com/transfer?to=attacker&amount=1000">