如何在生产环境、登台环境和开发环境之间沙箱 cookie?

问题描述 投票:0回答:2

我们有多个跨多个子域的 Web 应用程序,app1.company.com、app2.company.com。此外,我们还有多个环境、prod、staging、dev1、dev2

每个环境的所有服务都在应用程序名称末尾使用 -ENV 来将其与其他环境区分开来。例如

  • app1.company.com
  • app2.company.com
  • app1-staging.company.com
  • app2-staging.company.com
  • app1-dev1.company.com
  • app2-dev1.company.com

这不会是一个问题,除非我们想要从一个环境中开始共享 cookie。这意味着 cookie 的域必须设置为 .company.com。这会破坏我们的沙箱。另一种方法是在 cookie 名称前面加上环境前缀,但这看起来也像是一种拼凑,并且不能提供真正的安全性。

所以问题是人们如何设置他们的生产、登台和开发环境,以便 cookie 相互沙箱化。

security cookies
2个回答
5
投票

使用不同的域。您已经正确地指出,将 cookie 域设置为“company.com”会在所有域(而不仅仅是某些域)上共享它们。

您可以更改代码以在不同环境中设置/侦听不同的 cookie,但如果您的请求中存在大量虚假 cookie,这仍然可能使调试/诊断变得困难。

因此使用不同的域,例如:

app1.company.com  cookiedomain=.company.com
app2.company.com

app1.staging-company.com  cookiedomain=.staging-company.com
app2.staging-company.com

app1.dev-company.com      cookiedomain=.dev-company.com
app2.dev-company.com

设置额外的域很容易,您可能需要支付额外的 SSL 证书费用,但通常不会很大。这 '。'在 cookie 中设置的域很重要之前。


0
投票

我找不到任何可行的解决方案。然而,为每个 cookie 指定不同的名称似乎是可行的。

如果您有用户令牌,那么在读取 cookie 时将其存储为 user-staging、user-prod 会起作用,但是,在多个位置处理多个 cookie 会很烦人。

© www.soinside.com 2019 - 2024. All rights reserved.