CSRF的全名是Cross Site Request Forgery,也就是跨站点请求伪造
在一开始我对它也是一无所知,之后再查阅相关的资料后,才有所了解,有很多人会把它和xss联系在一起,有一些人甚至把它和xss搞混淆。
举一个简单的例子说明一下
http://blog.sohu.com/manage/entry.do?m=delete&id=156713012,在登录了sohu博客后,只要请求这个URl,就能够把编号为“156713012”这篇博客给删除。
首先在自己的域构造一个页面,http://www.a.com/csrf.html,内容为:<img src="http://blog.sohu.com/manage/entry.do?m=delete&id=156714243"/>,这是使用了一个<img>标签,其地址指向了删除博客文章的链接。
当攻击者诱使用户去访问这个构造的页面,用户会看到一张无法显示的图片,再回头看看搜狐博客,可以看到编号为:“156714243”这篇博客被删除了。
刚才访问的页面,图片标签向搜狐的服务器发送了一次GET请求。
回顾一下整个攻击过程,攻击者仅仅诱使用户访问了一个页面,就以该用户的身份在第三方站点里执行了一次操作。
CSRF进阶:
浏览器所持有的cookie分为两种,1.session Cookie,又称为临时Cookie,2.Third-party Cookie,也称为本地Cookie。
可以使用csrf为伪造发送cookie,只要在http头中,加入header("set-cookie:1234")等内容php,然后再构造类似上面的伪造页面,就可以向服务器发送我们构造的cookie,但是IE出于安全的考虑,默认是禁止了浏览器在<img>,<iframe>,<script>,<link>等标签中发送第三方cookie,但是在Firefox2、3、opera、google Chrome、andriod等都是默认允许第三方cookie的。
如果实在不需要认证的时候,就可以忽略发送cookie了。但是在很多情况下,服务商都宁愿牺牲用户的用户体验,而要cookie等身份验证,那我们应该怎么实现csrf呢,可以使用P3P头,这伤害W3C指定的一项关于隐私的标准,全称是“The Platform for Privary Preferences",如果网站返回给浏览器的HTTP头中包含有P3P头,则在某种程度上允许发送第三方cookie。P3P主要用于类似广告等需要跨域访问的页面。可以通过构造P3P头来发送第三cookie,具体可以查阅W3C制定的标准,它的语法很简单,都是一一对应关系。
GET和POST请求,在传统意义上,安全人员都会认为,<img>、<iframe>、这些标签都是发送的是GET请求,使用防御csrf可以通过改为POST请求即可,但是在之前google Gmail就出现了一些问题,有安全研究人员,通过在恶意页面中,隐藏一个iframe,地址是指向pdp写的csrf伪造页面。构造了一个POST请求的链接,这个链接的作用是把参数生成一个POST的表单,并自动提交。在浏览器中已经存在Gmail的临时cookie,所以用户在iframe中对Gmail发起的这次请求会成功,并将所有带附件的邮件都转发到攻击者的邮箱中。
CSRF防御
1.验证码,被认为是对抗CSRF攻击最简洁而有效的防御方法
2.referer check,最常见的应用是”防止图片盗链“,但是在于处于隐私保护考虑,限制了referer的发送,所以在某些情况下,浏览器也不会发送referer。
3.Anti Csrf Token,就是在cookie或者是在session,或者query string中加入一些随机数,让攻击者难以构造出伪造的请求链接。对于Token的生成要采用安全的随机数生成器,比如物理随机数等
详细解决方案
跨站点请求伪造(CSRF)
热度:62 发布时间:2024-01-03 11:43:40.0
相关解决方案
- CSRF,该如何解决
- CSRF,该如何解决
- BTS测试实验室 --- CSRF
- CSRF-看似不重要实则是非常危险的,你中招了嘛?攻击与防御
- CORS(跨域源资源共享)CSRF(Cross-site request forgery)跨站请求伪造简介
- DVWA——CSRF(low)
- Http协议的理解和使用,httpRequest,XmlHttpRequest,csrf
- DVWA 跨站请求伪造(CSRF)
- java web 安全防护1-CSRF(Cross-site request forgery 跨站请求伪造)
- CSRF(跨站请求伪造攻击)漏洞详解
- 安全测试之跨站请求伪造(CSRF)攻击
- Laravel 5.8 :基础组件 —— CSRF 保护
- client 提交post 到 django出现403错误 csrf
- django csrf token跨站请求
- django 提交 form表单时遇到“CSRF verification failed. Request aborted”问题的解决办法
- 什么是 CSRF 攻击?如何防范 CSRF 攻击?
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- Django提交POST表单“CSRF verification failed. Request aborted”问题的解决
- 【SpringBoot学习】23、SpringBoot 防止SQL注入、XSS攻击、CSRF/CROS恶意访问
- 宝塔插件vue开发踩坑 FormData、CSRF
- 前端403权限问题(报错:CSRF Failed: CSRF token missing or incorrect get)
- 【转载】CSRF CORS
- 跨站点请求伪造(CSRF)
- HP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- DVWA--CSRF
- 信息安全实践-Lab3 CSRF XSS
- DVWA - CSRF (low, medium, high)
- 【Web安全】CSRF 攻击 (最新解决方案)
- CSRF 与 SSRF
- A request has been denied as a potential CSRF atta