什么是CRSF
CSRF(Cross-site request forgery)即跨站请求攻击。简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。因为浏览器之前认证过,所以被访问的站点会觉得是这是真正的用户操作而去运行。
这就利用了web中用户身份认证验证的一个漏洞:简单的身份验证仅仅能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发
出的。
其实可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包含:以你的名义发送邮件;发消息;盗
取你的账号;甚至于购买商品、虚拟货币转账…造成的问题包含个人隐私泄露以及财产安全。
CRSF防御
检查HTTP Referer首部是否同域
限制Session Cookie的生命周期
使用验证码
使用一次性token
接口防刷技术解析
-
网关控制流量洪峰,对在一个时间段内出现流量异常,可以拒绝请求;
-
源ip 请求个数限制。对请求来源的ip 请求个数做限制;
对单个用户/ip限制每分钟最多提交的次数。实现方式有多种,常用的方式是记录单次提交成功的单个用户/ip放到mc/redis里面,然后给mc设定2分钟的缓存时间。下次该用户/ip提交数据的时候先查mc是否已过期,没过期,则不给提交。
- http 请求首部字段进行校验;
例如Host , User-Agent , Referer 等
-
对用户唯一身份uid进行限制和校验。例如基本的长度,组合方式,甚至有效性进行判断。或者uid具有一定的时效性;
-
前后端协议采用二进制方式进行交互或者协议采用签名机制;
-
人机验证
各种验证码(短信验证码、语音验证码、问题类验证码、读取式验证码、字符/图片类验证码、点触式验证码、视频验证码、行为式验证码、拖动式验证码等)