使用非安全页面时,将覆盖安全django会话cookie

时间:2013-10-21 01:12:53

标签: django session cookies ssl

在Django中设置SESSION_COOKIE_SECURE = True告诉浏览器只通过SSL发送会话cookie。但是,如果经过身份验证的用户从安全页面导航到非安全页面,则会话中间件将不知道安全会话(因为将不会发送cookie),并将设置新的会话cookie。结果是用户随后被注销,需要再次登录。

例如,用户可能会在安全管理员中编辑某些内容,点击“在网站上查看”,转到非ssl页面,然后点击返回,只是发现他们的会话已被覆盖,并且不再认证

我只是想知道解决这个问题的首选方法是什么。

我可以看到,有以下解决方案:

  1. 对网站的安全/非安全部分使用不同的(子)域。强制ssl域上的所有内容都是ssl。 (我知道这可能是首选方案,但目前不是一种选择)

  2. 为网站的安全/非安全部分使用不同的django项目(和不同的会话cookie名称)。使用nginx代理适当的django项目。

  3. 创建基于django.contrib.sessions.middleware.SessionMiddleware的自定义中间件,根据安全/非安全手动处理会话。甚至可以检查网址是否为管理网址,并使用不同的Cookie名称和Cookie路径。

  4. 设置SESSION_SAVE_EVERY_REQUEST = False并希望用户不会导航到使用Cookie的网页。

0 个答案:

没有答案