CSRF的攻与防

知己知彼,百战不殆。html

什么是CSRF

CSRF,全程跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。安全

一般能够理解为:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF可以作的事情包括:以你名义发送邮件,发消息,盗取你的帐号,甚至于购买商品,虚拟货币转帐......形成的问题包括:我的隐私泄露以及财产安全。服务器

CSRF原理

csrf

从上图能够看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:session

  1. 登陆受信任网站A,并在本地生成Cookie。
  2. 在不登出A的状况下,访问危险网站B。

简单的概述一下就是:当用户登陆某个网站A获取到Cookie,在Cookie没有失效的状况下访问了另外一个危险网站B(伪造某个请求方式)可能默认触发事件达到用户不知情的状况下携带以前的Cookie请求网站A,从而迷惑服务端请求成功,形成危害。网站

CSRF防护

服务端的CSRF方式方法不少样,但总的思想都是一致的,就是在客户端页面增长伪随机数csrf

1. 增长伪随机数

  1. Cookie Hashing(全部表单都包含同一个伪随机值)
  2. 在表单里增长Hash值,以认证这确实是用户发送的请求。
  3. 表单提交后,而后在服务器端进行Hash值验证

2. 验证码

每次的用户提交都须要用户在表单中填写一个图片上的随机字符串htm

相关参考:https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.htmlblog