SameSite Cookie问题处理解决方案(谷歌Chome浏览器出现Whitelabel Error Page或者不停请求现象解决)

谷歌Chrome浏览器出现Whitelabel Error Page或者不停请求现象的解决:

在浏览器地址栏中输入chrome://flags/ 并打开,将如下选项禁用:
SameSite by default cookies
Enable removing SameSite=None cookies
Cookies without SameSite must be secure
设置为Disabled 重启浏览器即可

 

哪些人需要关注:

  1. 网关开发者
  2. SSO开发者
  3. 前后端分离开发者
  4. 所有接口提供方

问题描述:


Chrome浏览器会于2020年2月17日逐步将SameSite-by-default和SameSite=None-requires-Secure行为配置应用至最新稳定版本的Chrome80, 此次Chrome版本更新的摘要如下:

  1. Chrome将Cookie的SameSite属性默认值设为Lax

  2. Chrome将拒绝非https的SameSite=None的Cookie, 即Set-Cookie: Key=Value 。 补充: 测试环境HTTPS可提交OA流程申请(IT资源申请单B3, 注明要求增加HTTPS访问)

已知的受影响范围:

  1. 如星河iframe引用的子系统需要重新登录

  2. w3.zto.com, 将会出现重定向死循环(Set-Cookie失败)

应对措施:

  1. 接口提供方确认, 若无需被跨域调用, 则应将Cookie的SameSite属性设置为Lax, 并可忽略下列2、3条方案

  2. 接口如需被跨域调用, 且接口会Response Set-Cookie, 则需对cookie进行”SameSite=None; Secure”设置(需在2020年2月17日前完成适配),  此调整有以下注意点:

    1. 防CSRF措施: 表单提交的重要功能需增加Referer做白名单或设置csrf token。

    2. 由于部分小众客户端尚不支持SameSite=None属性, 接口因根据User-Agent判断是否要设置SameSite=None属性, 简化规则: 判断Chrome80以上, 完整规则: https://www.chromium.org/updates/same-site/incompatible-clients , 

    3. [推荐]如接口既需要被第一方又需要被第三方调用, 则接口应判断调用域是否为同域, 若为同域, 则应设SameSite为Lax, 否则进行”SameSite=None; Secure”设置

  3. 接口提供方做调整(Secure)后, 测试环境若受影响, 可提交工单申请测试环境https域名
  4. 如果用户在登录完成之后才升级了chrome80, 并且登录会话依然在有效期内, 会造成: 同域请求登录正常, 跨域请求无法携带cookie的情况.
    预计的处理方式是: cookie中额外写入下发cookie时的chrome版本, 如果cookie中写入的版本与当前请求的版本不符, 就重新依照配置规则写入新的cookie

 

如何验证:

  1. 升级Chrome浏览器至80稳定版, 打开 chrome://flags/ 页面, 将 #same-site-by-default-cookies 和 #cookies-without-same-site-must-be-secure 设置为enable

  2. 打开您所管理的站点, 打开Network, 如下图视图, 如勾选"Only show requests with SameSite issues"后, 有请求出现在列表里, 则意味着存在此问题:

 

 

 

参考资料:


https://mp.weixin.qq.com/s/4WMf-n0dY5bW1wQbWW3T5A
https://web.dev/samesite-cookies-explained/
https://www.chromestatus.com/feature/5633521622188032
https://www.chromestatus.com/feature/5088147346030592

https://www.chromium.org/updates/same-site

你可能感兴趣的:(笔记)