我们有多个跨多个子域的 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 名称前添加环境前缀,但这看起来也很杂乱,并不能提供真正的安全性。

    所以问题是人们如何设置他们的 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/

    10-12 12:17
    查看更多