我们有多个跨多个子域的 Web 应用程序,app1.company.com、app2.company.com.. 此外,我们有多个环境,prod、staging、dev1、dev2
每个环境的所有服务都在应用程序名称的末尾使用 -ENV 以将其与其他服务区分开来。例如
这不是问题,除非我们想从环境中开始共享 cookie。这意味着 cookie 必须将其域设置为 .company.com。这会破坏我们的沙箱。另一种方法是在 cookie 名称前添加环境前缀,但这看起来也很杂乱,并不能提供真正的安全性。
所以问题是人们如何设置他们的 prod、staging 和 dev 环境,以便 cookie 相互隔离。
最佳答案
使用不同的域。您已经正确地指出,将 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 中设置的域很重要。
关于security - 你如何在 prod、staging 和 dev 环境之间沙箱 cookie?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33045456/