- Published on
网络安全
- Authors
- Name
- Reeswell
Web 安全
XSS 和 CSRF 攻击
XSS(跨站脚本攻击)
- 定义:攻击者向网页中注入恶意脚本(通常为 JavaScript),当其他用户访问该页面时,脚本会在用户浏览器中执行,从而窃取用户信息、劫持会话或执行其他恶意操作。
- 本质:注入并执行脚本,攻击目标是用户浏览器。
- 举例:攻击者在评论区插入
<script>alert('XSS')</script>
,其他用户访问页面时弹窗或窃取 Cookie。 - 防御措施:
- 输入过滤
- 输出编码(如 HTML 转义)
- 使用 CSP(内容安全策略)
- 设置 HTTP Only Cookie
CSRF(跨站请求伪造)
- 定义:攻击者诱导用户在已登录的目标网站上,自动发起非用户本意的请求(如转账、修改密码等),利用用户的身份完成非法操作。
- 本质:伪造合法请求,攻击目标是服务器端对用户身份的信任。
- 举例:攻击者构造一个隐藏表单或图片,诱导用户点击链接,自动向银行转账接口发起 POST 请求。
- 防御措施:
- 使用 Anti-CSRF Token(同步令牌模式)
- 设置 SameSite Cookie 属性
- 验证 Referer 头
知识补充:XSS 底层原理
浏览器无法区分“合法脚本”和“恶意脚本”,只要 HTML 文档中包含<script>
或可执行的 JS 代码,浏览器都会执行。因此必须在输入和输出环节严格校验和转义,防止恶意代码注入。
CSRF 防护策略
分级防护建议
安全级别 | 适用场景 | 防御措施 |
---|---|---|
基础 | 博客/新闻站 | SameSite=Lax + 框架默认防护 |
标准 | 电商/社交网络 | 同步令牌 + SameSite=Strict |
高级 | 金融/医疗系统 | 加密令牌 + 关键操作二次认证 |
XSS 防护能力对比
防御手段 | 防存储型 | 防反射型 | 防 DOM 型 | 错误报告 |
---|---|---|---|---|
输入过滤 | ✓ | ✓ | ✗ | ✗ |
输出编码 | ✓ | ✓ | ✓ | ✗ |
HTTP Only Cookie | ✓ | ✓ | ✓ | ✗ |
CSP | ✓ | ✓ | ✓ | ✓ |
XSS 攻击类型对比
攻击类型 | 存储位置 | 触发方式 | 影响范围 | 危险程度 |
---|---|---|---|---|
存储型 XSS | 服务器数据库 | 用户访问包含恶意脚本的页面 | 持久性,影响所有访问用户 | 高 |
反射型 XSS | URL 参数 | 用户点击包含恶意脚本的链接 | 一次性,影响点击用户 | 中 |
基于 DOM 型 | 前端 DOM | 客户端 JavaScript 处理用户输入 | 本地执行,不经过服务器 | 中 |