政府网站的无Cookie Django

时间:2010-06-07 20:36:53

标签: django security

当我从政府机构写一个django网站时,我将无法使用cookies。我找到了这个代码段http://djangosnippets.org/snippets/1540 /但它目前不允许用户登录。在开始调试之前,我想知道是否有其他人用这个片段或其他任何方式解决了这个问题?

更新

唯一的答案似乎是URL路由中的中间件/会话,但如果你有一个公共部分和登录时可以访问私有部分的网站,那么这就成了甚至更糟的解决方案。我们决定采用的路线是“遵循”指南:

  1. 您网站提供的任何Cookie的内容和目的应始终传达给用户。
  2. 用户应该能够拒绝cookie而不会影响您网站的基本可用性。
  3. 如果您的网站拒绝接受其网站上的Cookie,您的网站应该会通知您的网站技术功能会降级。
  4. 我们对基本的定义是你可以在没有登录的情况下看到的所有东西。让我们希望它会影响它们。本指南的历史可以追溯到2002年,不适合现代网络应用程序。手指交叉......

    感谢每个人的贡献。

4 个答案:

答案 0 :(得分:2)

我已经发布http://pypi.python.org/pypi/django-cookieless来管理没有cookie的会话的使用,这确实允许一些额外的安全功能,例如仅在表单帖子中传递的加密会话密钥,将加密连接到客户端ip等。 但安全方面我仍然不建议将其用于与经过身份验证的用户绑定的会话,因为没有cookie,会话窃取无法得到足够的保护。

答案 1 :(得分:1)

虽然您可以在没有cookie的情况下使用django,但数百万种方式,所有这些都会假设您不需要跟踪会话数据。通过cookie保存会话数据可能是最可靠和最安全的方式,无论是对用户还是对您而言。替代方案是将会话ID附加到URL的末尾(可能会通过引用者标头将这些会话ID暴露给外部服务器)和跟踪ip,这将无法正常工作,除非只有一个用户来自一个IP一段时间,你知道所有用户的IP,他们很少会改变,我无法想象2010年在网络应用程序中实现的那样。

答案 2 :(得分:1)

您可以使用HTTP身份验证(基本或摘要)。大多数Web浏览器允许存储这些凭据,或者在浏览会话结束时使它们过期。管理员不关心如何完成身份验证,因此您甚至无法启用会话。

请注意,使用HTTP Basic身份验证时,您需要在https下提供服务,因为标题基本上是包含用户名和密码的明文。

答案 3 :(得分:0)

您可以将数据键入传递给应用程序的REMOTE_USER请求标头(如果存在),但这需要Web服务器中的自定义中间件和身份验证配置才能完全运行。