再看CORS的cookie跨域
程序开发
2023-09-03 07:37:53
1. 前提
- 首先查看http头部有无origin字段;
- 如果没有,或者不允许,直接当成普通请求处理,结束;
- 如果有并且是允许的,那么再看是否是preflight(method=OPTIONS);
- 如果不是preflight(简单请求),就返回Allow-Origin(必须的)、[Allow-Credentials,Access-Control-Expose-Headers],并返回正常内容。
- 如果是preflight(预先请求),正式通信前多一次预检请求,就返回Allow-Headers、Allow-Methods等,内容为空
2. CSRF攻击
- 借助第三方网站(需要注册一个恶意网站)
- 需要用户登录
- 需要一个ajax异步请求
- 验证HTTP的referer字段
- 在请求地址中添加token
抵抗csrf的关键就是在请求中放入不存在cookie中,且黑客不能伪造的信息,在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
2. Cors中携带cookie的三个条件
- 服务器的响应头需要携带Access-control-allow-Credentials,并设置为true:表示允许携带cookie请求资源
- 浏览器发起的ajax请求,必须设置withCredential为true,表示允许发送cookie
- 响应头中的Access-control-allow-origin一定不能为*,需要指定域名
标签:
相关文章
-
无相关信息