当前位置 博文首页 > 闫玉林的博客:SameSite Cookie导致的跨域请求session保持失效

    闫玉林的博客:SameSite Cookie导致的跨域请求session保持失效

    作者:[db:作者] 时间:2021-08-17 18:53

    引入原因

    • 浏览器安全性
    • 防止跨站攻击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)
    cs