课程名称:计算机网络应用 核心摘要:本讲介绍第二种常见 Web 攻击方式——CSRF(跨站请求伪造)。重点讲解 CSRF 的命名由来、与 XSS 的本质区别、攻击前提条件与完整攻击流程(诱导链接→访问恶意站点→以受信任用户身份发起伪造请求),并梳理出"受信任用户浏览器、冒充身份、伪造请求"三大关键要素。
- CSRF(Cross-Site Request Forgery,跨站请求伪造):攻击者通过伪装来自受信任用户的请求,诱导其在已登录目标站点的状态下,向受信任网站发送非本意的恶意请求,从而完成攻击。
- 命名由来:全称为 Cross-Site Request Forgery,缩写 CSRF。名称凸显"伪造"二字,带有欺骗意味;区别于 XSS 凸显"攻击"(硬碰硬)。
- 攻击本质:黑客**借助受信任用户之手(浏览器)**完成攻击,用户本身并无攻击意图,真正的攻击发起者是幕后的黑客/钓鱼网站。
- 与 XSS 的核心差异:XSS 是黑客直接植入恶意脚本,用户访问时触发;CSRF 是黑客伪装成受信任用户发出请求,借用户身份完成攻击。
- 使用场景:XSS 作为主流攻击方式,防御手段较多;当目标站点已对 XSS 漏洞完成防护、黑客无法直接攻击时,CSRF 成为一种理想的替代攻击方式。
| 对比维度 | XSS(跨站脚本攻击) | CSRF(跨站请求伪造) |
|---|
| 关键词 | 攻击(硬碰硬) | 伪造(欺骗) |
| 攻击主体 | 黑客直接植入恶意脚本 | 黑客伪装成受信任用户发起请求 |
| 利用的信任关系 | 站点内信任用户(注入脚本后被他人访问触发) | 伪装来自受信任用户的请求访问受信任网站 |
| 攻击方式 | 黑客直接植入代码 | 黑客提供工具,借用户之手完成攻击 |
| 触发条件 | 用户访问含恶意脚本的页面 | 用户已登录目标站点 + 单击诱导链接 |
| 防御现状 | 主流攻击,防御手段多 | 当 XSS 被防护后的替代攻击方式 |
| 用户角色 | 普通用户/管理员访问即触发 | 受信任用户被"借手"完成攻击 |
| 前提 | 说明 |
|---|
| 用户已登录目标站点 | 用户已正常访问并登录目标 Application(如拉钩教育),浏览器持有登录态 |
| 黑客无法直接攻击 | 目标站点已对 XSS 等漏洞做防护,黑客不能直接攻击成功 |
| 需诱导用户访问恶意站点 | 黑客必须让用户访问其控制的服务,才能下发含攻击代码的页面 |
前提:用户已登录目标 Application(浏览器持有受信任身份)
↓
黑客通过一定方式向用户发送【诱导链接】(钓鱼网站)
↓
用户单击不明链接 → 访问恶意站点
↓
恶意站点返回包含攻击目标站点恶意代码的页面
↓
用户浏览器打开页面 → 自动触发攻击代码
↓
以【受信任用户身份】向目标 Application 发起伪造请求
↓
目标 Application 响应请求 → 攻击完成
| 角色 | 身份/作用 |
|---|
| 目标 Application | 受信任网站(如拉钩教育),攻击目标 |
| 普通用户 | 已登录目标站点,浏览器代表受信任用户身份 |
| 黑客/恶意站点 | 幕后始作俑者,提供钓鱼网站与攻击代码 |
| 诱导链接 | 欺骗性/诱导性链接,诱使用户单击访问恶意站点 |
| 用户浏览器 | 发起请求的载体,请求以受信任用户身份发出 |
诱导链接必须具有诱惑性/诱导性,才能保证用户大概率单击,例如:
- 伪装成聊天室、社交邀请等具有欺骗性的内容
- 利用用户好奇心或利益驱动的钓鱼手段
CSRF 攻击三要素:
1. 受信任用户的浏览器
- 表示受信任用户的身份(已登录态)
2. 冒充身份
- 恶意程序冒充受信任用户(浏览器)的身份
3. 伪造请求
- 借助受信任用户浏览器发起的访问请求
- 背后真正的攻击者是黑客
[黑客/恶意站点]
│
│ 1. 发送诱导链接
▼
[普通用户(已登录目标App)] ──单击──▶ [恶意站点]
│
│ 2. 返回含攻击代码页面
▼
[用户浏览器]
│
│ 3. 自动触发,以受信任身份
▼
[目标 Application] ◀── 伪造请求
- 易混点:CSRF 凸显"伪造"(欺骗),XSS 凸显"攻击"(硬碰硬);二者攻击方式本质不同。
- 核心区别:XSS 是黑客直接植入脚本;CSRF 是黑客伪装受信任用户借用户之手发起请求。
- 攻击前提:用户必须已登录目标站点,浏览器持有受信任身份——这是 CSRF 成立的必要条件。
- 关键要素:受信任用户浏览器 + 冒充身份 + 伪造请求。
- 为何用 CSRF:当 XSS 等漏洞已被防护、无法直接攻击时,CSRF 是理想的替代攻击方式。
- 用户角色:用户并非攻击者,而是被黑客"借手"完成攻击的工具人。
- 诱导链接:必须具备欺骗性/诱惑性,才能保证用户单击访问恶意站点。
- 面试题:简述 CSRF 的原理与攻击流程;CSRF 与 XSS 的区别;CSRF 攻击成立的前提条件。
- 本讲仅讲解 CSRF 的攻击原理,具体的攻击实现演示将在下一讲展开。
- CSRF 的防御手段(如 Referer 校验、Token 验证、SameSite Cookie 等)尚未讲解,留待后续课程补充。
- CSRF 攻击中 Cookie/Session 自动携带机制的原理有待深入分析。
- 实际项目中如何结合框架进行 CSRF 防护落地,有待后续实践课程。