素材巴巴 > 程序开发 >

再看CORS的cookie跨域

程序开发 2023-09-03 07:37:53

1. 前提

  1. 首先查看http头部有无origin字段;
  2. 如果没有,或者不允许,直接当成普通请求处理,结束;
  3. 如果有并且是允许的,那么再看是否是preflight(method=OPTIONS);
  4. 如果不是preflight(简单请求),就返回Allow-Origin(必须的)、[Allow-Credentials,Access-Control-Expose-Headers],并返回正常内容。
  5. 如果是preflight(预先请求),正式通信前多一次预检请求,就返回Allow-Headers、Allow-Methods等,内容为空
    在这里插入图片描述

2. CSRF攻击

  1. 借助第三方网站(需要注册一个恶意网站)
  2. 需要用户登录
  3. 需要一个ajax异步请求
  1. 验证HTTP的referer字段
  2. 在请求地址中添加token
    抵抗csrf的关键就是在请求中放入不存在cookie中,且黑客不能伪造的信息,在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

2. Cors中携带cookie的三个条件

  1. 服务器的响应头需要携带Access-control-allow-Credentials,并设置为true:表示允许携带cookie请求资源
  2. 浏览器发起的ajax请求,必须设置withCredential为true,表示允许发送cookie
  3. 响应头中的Access-control-allow-origin一定不能为*,需要指定域名

标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。