security - 如何在我的开发环境中绕过 SameSite cookie 限制?

标签 security cookies cross-domain

最近,Chrome 更改了是否将 cookie 附加到跨域请求的策略。现在,cookie 不会附加到跨域请求,除非:

  • SameSite cookie 属性是 LaxNone并且请求是由用户操作发起的,或者
  • SameSite cookie 属性是 NoneSecure cookie 属性是 true ,这意味着跨域请求必须使用 https方案。

  • (上面没有错,只是稍微简化了。这里是 a more thorough writeup 。)
    在我的开发环境中,我使用一个工具来编译我的开发语言并将更改热加载到我的浏览器选项卡中。这个工具在自己的端口上提供前端代码,后端由一个单独的进程在一个单独的端口上提供服务,所以我们正在处理从浏览器到后端的跨域请求。当然,前端和后端都来自 localhost与方案 http .前端应用程序发出的许多请求不是由用户操作发起的,但仍需要 cookie 以进行身份​​验证。
    因此,任何需要 cookie 的东西都无法在我的开发环境中运行。 (是的,花了很长时间才弄清楚那个……)
    我的问题是:如何绕过、解决或禁用这些 SameSite以一种简单的方式为我的开发环境设置 cookie 安全限制,在我浏览其他站点时不会降低我的安全性?
    例如,如果有一种方法可以添加 localhost,那就太好了。到我的浏览器中允许的来源白名单 SameSite=None即使没有 Secure=true 的 cookie属性。稍微不太好,但仍然可以接受,这将是包装或代理我的 http://localhost:<port> 的简单方法服务,以便可以通过 https 访问它们方案。或者也许还有另一种使用一些晦涩的 cookie 魔法的方法。
    2021-09-16 更新: @tommueller 指出 this question相关的。这个问题的不同之处在于它讨论了 [跨源但] 相同站点的情况,其中两个源都来自本地主机。

    最佳答案

    如果您的所有开发环境都托管在 localhost 下然后不同端口之间的请求,虽然跨域,仍然算作同站点。见:https://web.dev/same-site-same-origin/

    在您的开发环境中,您可以删除 SameSite=None; Secure完全或明确设置 SameSite=Lax .

    或者,查看为 localhost 创建自签名证书或本地虚拟机以更好地匹配您的生产环境 - 尽管这涉及更多。

    关于security - 如何在我的开发环境中绕过 SameSite cookie 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62013644/

    相关文章:

    java - 面向人类的 JAAS

    php - 使用 PhP 加密存储在 MySql 中的密码的最佳实践是什么?

    PHP 或 Javascript :Check if cookie is set, 如果它是改变 <li> 的内容

    python - Requestscookiejar 为空,即使页面有它

    signalr - 如何在跨域场景中避免使用 signalR 的 "mixed content warning"?

    java - 同一代码库中具有小程序类的 AccessControlException

    c# - Web 应用程序中的安全方法

    javascript - $resource 删除功能没有按预期工作?

    javascript - 访问同一域上的 iframe 内容

    javascript - CORS 是执行跨域 AJAX 请求的安全方法吗?