1. 什么是CSRF漏洞
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法
简而言之: 攻击者盗用了你在某个网站的身份,以你的名义发送恶意请求
2. CSRF能做什么事
以你的名义:
• 发邮件
• 发消息
• 财产操作比如转账,或者购买商品
• 修改密码
• 删除文章
• 等等
3. CSRF漏洞原理(摘抄自简书)
首先用户C浏览并登录了受信任站点A; •
登录信息验证通过以后,站点A会在返回给浏览器的信息中带上已登录的cookie,cookie信息会在浏览器端保存一定时间(根据服务端设置而定);
• 完成这一步以后,用户在没有登出(清除站点A的cookie)站点A的情况下,访问恶意站点B; • 这时恶意站点
B的某个页面向站点A发起请求,而这个请求会带上浏览器端所保存的站点A的cookie; •
站点A根据请求所带的cookie,判断此请求为用户C所发送的。 •
因此,站点A会报据用户C的权限来处理恶意站点B所发起的请求,而这个请求可能以用户C的身份发送
邮件、短信、消息,以及进行转账支付等操作,这样恶意站点B就达到了伪造用户C请求站点 A的目的。
受害者只需要做下面两件事情,攻击者就能够完成CSRF攻击: • 登录受信任站点 A,并在本地生成cookie; •
在不登出站点A(清除站点A的cookie)的情况下,访问恶意站点B。
很多情况下所谓的恶意站点,很有可能是一个存在其他漏洞(如XSS)的受信任且被很多人访问的站点,这样,普通用户可能在不知不觉中便成为了受害者。
4. CSRF漏洞的防御
(1)尽量使用POST,避免使用GET
(2)验证 HTTP Referer 字段
(3)在请求地址中添加 token 并验证
(4)在 HTTP 头中自定义属性并验证
(5)将cookie设置为HttpOnly
5. CSRF漏洞检测方法
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
6. CSRF漏洞检测工具
CSRFTester、CSRF Request Builder等