CSRF 攻击的原理和防范措施

CSRF攻击示意图

  • 客户端访问服务器时没有同服务器做安全验证
  • 一、攻击原理:
    1. 此时网站A在接收到请求之后已经判断当前用户是登录状态,所以恶意网站就可以根据用户的权限做具体的恶意操作了,造成网站攻击成功。
    2. 而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookie
    3. 用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数
    4. 用户C访问正常网站A时进行登录,浏览器保存A的cookie

 二、防范措施:

  1. 在指定表单或者请求头的里面添加一个随机值做为参数
  2. 在响应的cookie里面也设置该随机值
  3. 那么用户C在正常提交表单的时候会默认带上表单中的随机值,浏览器会自动带上cookie里面的随机值,那么服务器下次接受到请求之后就可以取出两个值进行校验
  4. 而对于网站B来说网站B在提交表单的时候不知道该随机值是什么,所以就形成不了攻击

 三、其实简单点来说就是:

         你访问了信任网站A,然后A会用保存你的个人信息并返回给你的浏览器一个cookie,然后呢,在cookie的过期时间之内,你去访问了恶意网站B,它给你返回一些恶意请求代码,要求你去访问网站A,而你的浏览器在收到这个恶意请求之后,在你不知情的情况下,会带上保存在本地浏览器的cookie信息去访问网站A,然后网站A误以为是用户本身的操作,导致来自恶意网站C的攻击代码会被执:发邮件,发消息,修改你的密码,购物,转账,偷窥你的个人信息,导致私人信息泄漏和账户财产安全收到威胁。

        解决原理:添加csrftoken值后,web框架会在响应中自动帮我们生成cookie信息,返回给浏览器,同时在前端代码会生成一个csrf_token值,然后当你post提交信息时,web框架会自动比对cookie里和前端form表单或ajax提交上来的csrf_token值,两者一致,说明是当前浏览器发起的正常请求并处理业务逻辑返回响应,那么第三方网站拿到你的cookie值为毛不能验证通过呢,因为他没你前端的那个随机生成的token值啊,他总不能跑到你电脑面前查看你的浏览器前端页面自动随机生成的token值吧。

猜你喜欢

转载自blog.csdn.net/chengqiang20152015/article/details/81109884