手机验证码(一)

csrf 作为一个中间件 当客户端发起post请求服务器,由于携带请求body,csrf会验证

如果请求中包含请求体body, csrf会验证,才会进入视图函数

image-20200819115333038

验证机制:

从cookie中获取一个csrf_token,

从请求体中获取一个csrf_token的值

两者值进行对比, 如果相同则检验通过,可以进入到视图函数中执行

不同则,检验失败,会向前端返回状态码400错误.

image-20200819125656634

黑客是如何发动CSRF攻击的?

csrf验证 在发送的数据中,除了cookie包含csrf_token, body中也放一个csrf_token.这样银行能知道 这个body也是原用户的body

那黑客也去造一个 csrf_token呢?

image-20200819130035576

如果我无法造这个csrf_token,那我去写个js脚本,查找这个cookie中的值呢?为什么?

不行, 因为同源策略, 即不同源的网站不能相互操作资源,以ip地址,端口号,及协议来唯一认定.

银行 192.168.1.2 黑客是1.3 .不同源 ,浏览器限制你js读取数据.

image-20200819130513457

思考

  1. CSRF在哪?一共有几个csrf_token? 分别从哪来? 这个值是我们自己设置的?

  2. 哪些发送方式带有请求体?

答案:

  1. CSRF在请求和发送端之间作为一个中间件.一共有2个csrf_token 分别取自发送端的cookie和body, 是

  2. POST, PUT, DELETE都可以带有请求体

posted on 2020-08-20 21:57  sunnywillow  阅读(290)  评论(0编辑  收藏  举报