Professional Documents
Culture Documents
1.CSRF 简介
2.CSRF 实例讲解
3.CSRF 真实案例
4.CSRF 进阶
6.CSRF 防御
7.CSRF 与 XSS
8.总结
CSRF 简介
CSRF 简介
什么是 CSRF ?
• CSRF ( Cross-site Request Forgery ),中文名称:跨站点请求伪
造,也被称为: One Click Attack/Session Riding ,缩写为:
CSRF/XSRF ;
• CSRF 这种攻击方式在 2000 年已经被国外的安全人员提出,但在国内
,直到 06 年才开始被关注, 08 年,国内外的多个大型社区和交互网
站分别爆出 CSRF 漏洞,如: NYTimes.com (纽约时
报)、 Metafilter (一个大型的 BLOG 网站), YouTube 和百度
Hi...... 而现在,互联网上的许多站点仍对此毫无防备,以至于安全
业界称 CSRF 为“沉睡的巨人”。
CSRF 简介
一句话概括 CSRF :
• 攻击者盗用(伪造)了受害者的身份,以受害者的名义发送恶意请求
,而这种恶意请求在服务端看起来只不过是正常请求。
CSRF 简介
CSRF 能做什么:
• 以受害者名义发送邮件,发消息,盗取受害者的账号,甚至购买商品
,虚拟货币转账,修改受害者的网络配置(比如修改路由器 DNS 、重
置路由器密码) ...... 造成的问题包括:个人隐私泄露、机密资料
泄露、用户甚至企业的财产安全;
• 一句话概括 CSRF 的危害:盗用受害者身份,受害者能做什么,攻击
者就能以受害者的身份做什么。
CSRF 简介
1.浏览并登录信任网站A
Web (A)
2.验证通过,在用户C处产生A的Cookie
(Trusted)
5.根据B在4的请求,浏览器带着2处产生的Cookie访问A
Browser
CSRF 攻击满足的【必要】条件:
• 在不登出 A 的情况下,访问危险网站 B 。
CSRF 实例讲解
CSRF 实例讲解
为什么会这样?
重复之前的操作过程:
• 先登录银行网站 A ;
• 不关闭网站 A ,打开新的标签页访问网页 B ;
1000 元又不翼而飞!
CSRF 实例讲解
为什么?
怎么办?
• 在 PHP 中,可以使用 $_GET 和 $_POST 分别获取 GET 请求和
POST 请求的数据;
• 经过前面的惨痛教训,银行网站 A 决定把后端 PHP 获取数据的方式也
强制改为 $_POST ,如下:
CSRF 实例讲解
结果?
- 但上面的浏览器都会发送 SessionCookie 。
CSRF 进阶
P3P 头:
• W3C 制定的一项关于用户隐私的标准;
CSRF 蠕虫:
• CSRF 攻击方式的终极形式:自我复制、迅速传播;
• 漏洞出现在百度用户中心发送短消息功能中:
CSRF 蠕虫:
• 如何成为蠕虫?
• 此处配合了另外一个漏洞:百度空间的好友功能数据是使用 json 格
式实现的,此接口没有做任何的安全限制,只需将 un 参数设定为
任意用户账号,就可以获得指定用户的百度好友数据,如下
CSRF 进阶
CSRF 蠕虫:
• 蠕虫思路:
• 将上面两个漏洞结合起来:让一个百度用户查看恶意页面后,将会给
他的所有好友发送一条短消息,消息中包含一张图片,图片地址再次
指向 CSRF 漏洞利用的恶意页面,这些好友再次将同样的消息发送给
他们所有好友
• 蠕虫得以呈指数方式传播。
CSRF 深入解析
CSRF 深入解析
本质是什么?
• 再深入一点,其本质原因是重要操作的所有参数都可以被攻击者猜测
到。
CSRF 防御
CSRF 防御
验证码
• 验证码被认为是对抗 CSRF 攻击【最简洁有效】的防御方法;
CSRF 防御
加密!
http://host/path/zhuanzhang?to=blank_id&count=1000
http://host/path/zhuanzhang?to=md5(salt+blank_id)&count=1000
CSRF 防御
随机 Token (令牌)
http://host/path/zhuanzhang?to=blank_id&count=1000
http://host/path/zhuanzhang?
to=blank_id&count=1000&token=[random(seed)]
CSRF 防御
• 真随机
• 安全防御的体系相辅相成,缺一不可。
总结
总结
• 概述 CSRF 攻击基本原理
• 示例演示 CSRF 攻击
• CSRF 高级攻击技术
• CSRF 防御