【问题标题】:Django - sessionid cookie - Is this a security failure?Django - sessionid cookie - 这是安全故障吗?
【发布时间】:2015-01-21 16:15:22
【问题描述】:

为了看到这个可能的错误,您需要打开两个浏览器和一些插件来获取/设置 cookie。

如果您在 django 1.7 中创建一个新项目并访问管理站点 (/admin),并在第一个浏览器中成功登录并获取 sessionidcsrftoken cookie 并将它们设置为第二个浏览器登录页面并设置一个随机的用户名和密码,你会得到一个 CSRF 错误,如果你返回浏览器,你就登录了。

如何避免这种情况?

【问题讨论】:

  • 您不要将数据复制到其他浏览器!该数据是提供安全性的秘密信息。这类似于发送您的登录凭据。

标签: python django cookies django-csrf


【解决方案1】:

我想,你可以通过将 sessionid cookie 复制到另一个浏览器并导航 /admin 来获得相同的结果。您不需要csrftoken 来重现此问题。这被称为 sessionid 窃取,我知道的所有框架都容易受到这种类型的攻击。

为避免这种情况,请设置 SESSION_COOKIE_SECURE = True(默认为 False)以保护您的 sessionid cookie 免受中间人攻击。您还需要在生产服务器上安装 ssl 证书。然后将其配置为将所有http:// 请求重定向到https://。 https中的S代表secure,这意味着客户端和服务器之间的所有流量都是加密的,客户端和服务器之间没有任何人(客户端的ISP,服务器的托管服务提供商,代理等) ) 可以读取任何发送的数据。包括会话 cookie 值。

并使用SESSION_COOKIE_HTTPONLY = True(默认)来保护会话cookie不被XSS窃取。 HTTPONLY 意味着这个 cookie 将与每个 http 请求一起发送,但不能通过 javascript 从客户端的浏览器访问。因此,如果某些恶意软件 javascript 设法在客户端浏览器中运行,它无论如何都无法访问会话 cookie。

关于配置安全 django 服务器的好教程可以在这里找到:https://security.stackexchange.com/a/8970

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多