什么是CSRF(待完善)

CSRF解释:

Cross-site  rquest forgery(跨站点请求伪造)

指利用受害者尚未失效的身份认真信息(cookie.会话等)诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害者不知情的情况下以受害者的身份证向服务器发送请求,从而完成非法请求.

CSRF产生原因:

web应用存在以下特性:

  1. form元素的action属性能够指定任意域名的url
  2. 保存在cookie中的会话id会被自动发送给对象网站

1的问题在与,即便是恶意网站,也能够向攻击目标网站发送请求.

2的问题在于,即便请求经过了恶意网站,会话id的cookie值也照样会被发送,从而导致攻击请求在认证的状态下被执行

CSRF攻击过程的要求:

  1. 目标用户已经登录可网站,能够执行网站的功能
  2. 目标用户访问了攻击者构造的URL

CSRF漏洞的验证的两个简单条件:

验证方法:抓取数据包,删除referer后页面返回正常或者看有无token,以上两个返回正常和没有带token的话实锤csrf

1.服务端未验证referer(referer是判断用户从哪儿点击来到该页面),验证机制不完善,导致另一个不可信站点的请求可以被服务器接收并返回相应数据,

2.服务端未加token验证,用户每次执行敏感操作时,服务端应该返回一个随机数(token)给用户,用户请求时必须带上和服务端一样的token,否则拒绝执行,如果没有采用token机制或者token可预测,csrf就变得很容易执行

CSRF利用过程:

攻击者发现csrf漏洞-构造恶意代码-发送给受害人-受害人打开-受害人被欺骗执行代码-完成攻击

可以参考如下图攻击流程图:

从上图可以看出,要完成一次csrf攻击,受害者必须依次完成两个步骤:

1.登录受信任的网站A,并在本地生成cookie

2.在不登出A的情况下,访问危险网站B

那是不是可以提出疑问:"如果我不满足以上两个条件,是不是我就不会受到csrf攻击"使得,确实如此,但是你不能保证如下两点:

1.你不能保证你登录了一个网站后,不在打开一个tab页面并访问另外的网站

2.你不能保证你关闭浏览器后,你本地cookie立刻失效,你上次的会话立马结束(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了)

3.上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站

CSRF对策总结:

CSRF漏洞的根本性防范策略:

  1. 筛选出需要防范csrf的页面
  2. 确认是正规用户自愿发起的请求

确认请求是正规用户自愿发起的方法有三种:

嵌入机密信息(令牌,也就是token)

服务端验证token来确认是否由正规用户发起的请求,接受令牌请求(接收关键处理的请求)必须为post方法,假如使用get方法发送机密信息的话,令牌信息就有可能通过referer泄露出去

开发耗时中等,可以利用在收集网站上,对用户没有影响,建议使用的地方:最基本的防御策略,所有情况下均可使用

再次输入密码:

开发耗时中等,,增加了用户输入密码的麻烦,可以利用在手机网站,建议使用的地方:需要防范他人伪装或者确认需求很强的页面

验证referer

检验referer的策略也存在一定的缺陷,因为用户设置为不发送referer,页面就会无法正常显示,通过个人防火墙或浏览器的插件等禁止referer的用户不在少数,另外,收集浏览器中也有不发送referer的浏览器和能够关闭发送referer功能的浏览器,其适用范围较小

开发耗时小,关闭了referer的用户无法正常使用该策略,不能用于手机网站,建议使用的地方:用于能够限定用户环境的既有应用的csrf防范策略

csrf的辅助策略:

执行完关键处理后,像用户注册的邮箱发送通知邮件(虽然不能防范csrf攻击,但是在遭受了csrf攻击情况下能第一时间让用户知情,从而将损害降到最低)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值