CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
CSRF可以做什么?
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。
CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
怎么防御
CSRF的原理其实它完全是以用户的身份去执行,而应用程序和浏览器很难去判断这是CSRF攻击还是合法请求。
那么,防御方法也就是针对这个来设计了。
主要有以下几种方法,简单讲一下:
- 使用POST方式替代GET
- 检验HTTP Referer
- 使用验证码
- 使用token
检验HTTP Referer
通过检查请求页面的来源,识别从站外发起的请求,也就能防御CSRF了。
使用验证码
每次用户提交内容时,要求其在表单中填写验证码,提交后对其进行检测。
验证码机制是:服务器生成一个验证码,发送给客户端,以图片形式显示。然后客户填写后,发回服务器,对比验证。
使用token
CSRF能成功的一个重要原因是:攻击者能预知和伪造请求中的关键字段,因此,在请求中放入攻击者不能伪造的信息就能防御CSRF。
token就是在请求中加入一个随机参数token,服务器进行验证。
SS4的CSRF防御实现
个人猜测SS4的CSRF是通过POST+Token的方式走的,即把token随机生成,然后hidden传输,具体机制知道的朋友也可以探讨下