gpt4 book ai didi

python - 在多个子域上共享 Django session 的缺点

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:23 24 4
gpt4 key购买 nike

我使用 Sites Framework 构建了一个 Django 站点,并且在不同的子域上有四个站点。让我们称他们为 one.mydomain.com; two.mydomain.com ...等

其中三个网站是产品网站,一个是商店。我希望能够跨站点共享 session ,以便用户在从任何产品站点移动到商店时不必再次登录。我意识到我可以使用 cas实现单一登录,但我认为这不能满足我的所有目的。

我已阅读 this postthis post关于跨子域共享 session 和共识似乎是一个坏主意。

在我的例子中,我希望用户能够将商品添加到一个子域上的购物车,然后前往购物车结账。如果不共享 session ,我看不到这样做的方法。用户还应该能够从另一个产品站点添加到他们的购物车,并且在结帐时会看到来自 one.mydomain.com 的产品、来自 two.mydomain.com 的产品等。

所以我的问题是,除了潜在的冲突之外,为什么共享 session 不是一个好主意?假设我确保唯一发生(并且应该发生)的冲突是用户登录信息。

我的设置为所有站点共享 SECRET_KEY 和 SESSION_COOKIE_DOMAIN='.mydomain.com'。此设置是否存在我遗漏的严重安全漏洞?

谢谢./w

最佳答案

在我看来,当您不控制特定域的所有子域时,这是一个安全漏洞。例如,您有 one.mydomain.com 和 two.mydomain.com,但浏览器会将您的 cookie 也提供给名为 bad.mydomain.com 的网站,因为您的设置为 SESSION_COOKIE_DOMAIN='.mydomain.com'。

如果您将开发环境保留为子域之一(例如 dev.mydomain.com),则会发生另一个潜在漏洞。如果是这样的话,您就不会被孤立。

就我对该主题的研究而言,最坏的情况似乎是将您的 cookie 泄露给流氓子域,因此可能有人可以使用此 cookie 劫持真实 session 。

目前我正在进一步研究如何以更好的方式隔离不同的子域(由 Django 的同一个实例控制),但除了重写 SessionMiddleware 之外似乎没有真正的方法可以做到这一点。

关于python - 在多个子域上共享 Django session 的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com