SameSite Cookie导致的跨域请求session保持失效

引入原因

  • 浏览器安全性
  • 防止跨站攻击CSRF等
  • 废除第三方cookie

cookie简介

Cookie 是通过 web 浏览器从网站发送并存储在计算机上的文本字符串。 它们通常用于身份验证和个性化设置,例如,撤回有状态的信息、保留用户设置、录制浏览活动以及显示相关广告。 Cookie 始终链接到特定域,并且可以由各方安装。

Cookie 和 HTTP 请求

在引入 SameSite 限制之前,cookie 存储在浏览器中时,它们被附加到每个HTTP web 请求,并通过设置 Cookie HTTP 响应头发送到服务器。 是可预测的,这种性能可能会引入安全漏洞,如跨站点请求伪造(CSRF)攻击。 SameSite 组件通过其在 SetCookie 标头中的实现和管理减轻了暴露。

谷歌

  • Google Chrome 版本51引入了 SetCookie SameSite 规范作为可选属性。
  • 在2019年5月,Chrome 宣布推出 Cookie 的默认安全模型,采用新的 Cookie 分类系统 (规范)。
  • 在2020年2月份,谷歌发行Google Chrome 80 时引入了新的cookie值,并默认强加了cookie策略。
  • 三个值可以传递到更新的SameSite属性: Strict、宽松或无。 未指定SameSite属性的cookie 将默认为SameSite=Lax

默认严格:Set-Cookie: key=value; SameSite=Lax
全 :Set-Cookie: key=value; SameSite=Strict
none:Set-Cookie: key=value; SameSite=None; Secure,但是需要HTTPS协议

  • 在2020年4月份,由于COVID-19造成的全球异常情况,谷歌宣布时回撤SameSite Cookie标签的实施。

考虑到由于COVID-19造成的全球异常情况,我们从今天开始临时回撤SameSite Cookie标签的实施。尽管大多数网络生态系统已为这一变化做好了准备,但我们希望确保提供基本服务的网站的稳定性,这些基本服务包括银行、在线食品杂货、政府服务和医疗保健,这些内容在这段时间内为我们的日常生活提供了便利。当我们回撤执行时,组织、用户和站点应该不会受到干扰。

  • 在2020年7月14日,谷歌恢复了针对Chrome 80+启用的 SameSite Cookie实施,与Chrome 84的稳定版保持一致

Edge

  • 从版本17672开始,Windows 10Microsoft Edge 浏览器引入了 SameSite cookie 支持。
  • 开发者可以选择不将 SameSite cookie 属性添加到 SetCookie 标头,也可以使用以下两个设置之一。未实现的 SameSite 属性被视为默认状态。

SameSite=None

  • 目前,SameSite=None团队桌面客户端或更早版本的ChromeSafari不支持此方法
  • 为了网络安全和排除第三个cookie,才创造了SameSite,设置为none时,要谨慎
  • 设置none时,需要https

解决SameSite导致的跨域问题

  • 保持在同一个域名下,或者二级域名,则不存在跨域问题
  • 设置SameSite=None,启用https,则允许跨域
  • 在chrome浏览器的地址栏输入:chrome://flags/ 然后在搜索框输入:SameSite by defaul cookies 将状态改为:desabled即可
  • 使用Nginx,推荐使用
  • 解决方案,待探究和测试

参考地址

  • 为 SameSite Cookie 设置做好准备 | Google Web 变更
  • Microsoft 团队和 SameSite cookie 属性(2020更新)
  • 解决跨域下Cookie的SameSite问题(使用Nginx)

你可能感兴趣的:(前端知识,chrome,devtools,edge,SameSite,跨域cookie,session保持)