加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在多个子域上共享Django会话的缺点

发布时间:2020-12-20 13:26:00 所属栏目:Python 来源:网络整理
导读:我使用Sites Framework构建了一个Django站点,并在不同的子域上有四个站点.让我们称之为one.mydomain.com; two.mydomain.com …等 其中三个网站是产品网站,一个是商店.我希望能够跨站点共享会话,以便用户在从任何产品站点移动到商店时不必再次登录.我意识到我
我使用Sites Framework构建了一个Django站点,并在不同的子域上有四个站点.让我们称之为one.mydomain.com; two.mydomain.com …等

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

我已经阅读了关于子域共享会话的this post和this post,并且共识似乎是一个坏主意.

在我的情况下,我希望用户能够将项目添加到一个子域中的购物车,然后前往购物车结帐.没有共享会话,我无法看到这样做的方法.用户还应该能够从其他产品站点添加到他们的购物车中,当退房时会看到来自one.mydomain.com的产品,来自two.mydomain.com等的产品.

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

我的设置为所有网站共享了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劫持一个真正的会话.

此时我正在进一步研究如何以更好的方式隔离不同的子域(由相同的Django实例控制),但似乎除了重写SessionMiddleware之外没有真正的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读