Flask-状态保持-CSRF

发布时间:2019-05-06 22:10:20编辑:auto阅读(2055)

    问题:cookies基于浏览器的同源策略,不同域名的cookie不能相互访问,为什么可以进行跨站请求伪造呢?

    原因:cookie基于浏览器的同源策略,确实是在实现状态保持的时候,不能跨域访问。

    跨站请求的伪造过程:是其他网站伪造访问原网站的请求,导致的一系列信息泄露。

    具体伪造过程:

     如何防止CSRF的过程呢,还是需要通过一系列双向验证来保证:

    在用户请求服务器的时候,服务器向cookie中写入csrf_token,浏览器的form表单中也会写入csrf_token,在浏览器进行下一次请求的时候,服务端会取到这两个token进行比对,一致就能验证是用户自己访问,不一致,就会存在伪造风险。

    1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值
    2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
    3. 在用户点击提交的时候,会带上这两个值向后台发起请求
    4. 后端接受到请求,以会以下几件事件:
      • 从 cookie中取出 csrf_token
      • 从 表单数据中取出来隐藏的 csrf_token 的值
      • 进行对比
    5. 如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

     

关键字