引入原因
- 浏览器安全性
- 防止跨站攻击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 10
为Microsoft Edge
浏览器引入了SameSite cooki
e 支持。 - 开发者可以选择不将
SameSite cookie
属性添加到SetCookie
标头,也可以使用以下两个设置之一。未实现的SameSite
属性被视为默认状态。
SameSite=None
- 目前,
SameSite=None
团队桌面客户端或更早版本的Chrome
或Safari
不支持此方法 - 为了网络安全和排除第三个cookie,才创造了SameSite,设置为none时,要谨慎
- 设置none时,需要https
解决SameSite导致的跨域问题
- 保持在同一个域名下,或者二级域名,则不存在跨域问题
- 设置SameSite=None,启用https,则允许跨域
- 在chrome浏览器的地址栏输入:chrome://flags/ 然后在搜索框输入:SameSite by defaul cookies 将状态改为:desabled即可
- 使用Nginx,推荐使用
- 解决方案,待探究和测试