一、CSRF漏洞原理
1、基本原理
CSRF(Cross-site Request Forgery,跨站请求伪造)是一种针对网站的恶意利用。
CSRF攻击可以利用用户已经登陆或已经授权的状态,伪造合法用户发出请求给受信任的网点,从而实现在未授权的情况下执行一些特权操作。
CSRF与XSS听起来很像,但攻击方式完全不同。XSS攻击是利用受信任的站点攻击客户端用户,而CSRF是伪装成受信任的用户攻击受信任的站点。
2、流程图
3、条件
●用户成功登陆了网站系统,能执行授权的功能
●目标用户访问了攻击者构造的恶意URL
二、分类
1、GET型
GET型是CSRF攻击最常发生的情形。只要一个http请求就可以了。
本质上,这样的逻辑代码设计本身就不合理。HTTP协议的设计初衷中,GET型请求需要保证“幂等性”,即无论重复发出了多少次GET请求,和仅发出一次请求所产生的效果应该是相同的。这就保证了GET型操作仅能进行类似“查询”、“获取资源”这样的操作。
2、POST型
POST请求是要把参数放在http的请求body里发送给服务器,所以POST类型的CSRF攻击需要用post的方式发送请求。通常的方法就是创建(静态创建或动态创建)一个自动提交的表单。当用户点击或浏览有这样表单的网页就会自动发生CSRF攻击。
三、危害
发送钓鱼邮件、盗用用户账号、网银转账、使用他人账号购买商品等,具体的危害跟存在漏洞的具体业务系统有关。
四、检测与防御
1、检测
手动检测
应首先确定Web应用程序对哪些操作是敏感的,在确认敏感操作后,拦截相应的HTTP请求消息,分析是否存在CSRF漏洞。
半自动检测
常用工具有OWASP的CSRFTester、BurpSuite的Scanner功能。
2、防御
●增加二次验证机制
在敏感操作时候,不再直接通过某个请求执行,而是再次验证用户口令或者再次验证类似验证码等随机数。如:转账时,要求用户二次输入密码。
●校验HTTP Referer字段
校验HTTP Referer字段可以保证相关敏感操作来自授权站点的跳转。在HTTP协议中,定义了一个访问来源的字段,即HTTP_REFERER。站点可以在后端校验Referer是否来自于正常的站内跳转。如果攻击者诱导用户点击跳转链接,则Referer就为攻击者的主机,与网站内部内部跳转情况下的Referer字段不同。
●增加Token参数进行校验
在敏感操作的参数中,增加完全随机的Token参数进行校验。这是目前业内防止CSRF攻击最常用的方法。因为CSRF产生的根本原因是,进行敏感操作时用户每次发送的请求都完全相同。因此,攻击者就可以把这样的请求进行封装包裹,诱导用户点击链接并发出请求。而如果在进行敏感操作时,增加完全随机的Token参数,每次进行敏感操作时发送的请求都不完全相同,攻击者也就没有办法伪造出一个合法的敏感操作请求,也就无法实施CSRF攻击。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77676.html