如何使 Django sessionId cookie 安全

use*_*910 5 python django django-sessions

这是我当前的sessionIdcookie 属性:

设置-Cookie:sessionid=3jdpjxgepk49vrnhbabdvju3r80ci581;到期=格林威治标准时间 2018 年 8 月 6 日星期一 12:40:14;HttpOnly; 最大年龄=1209600;路径=/

我想sessionId通过以下secure属性确保安全:

设置-Cookie:sessionid=3jdpjxgepk49vrnhbabdvju3r80ci581;到期=格林威治标准时间 2018 年 8 月 6 日星期一 12:40:14;HttpOnly,安全;最大年龄=1209600;路径=/

我尝试在 中添加以下属性settings.py

SESSION_COOKIE_SECURE = True
Run Code Online (Sandbox Code Playgroud)

但是,我仍然没有securesessionId. 对此有任何替代解决方案吗?

fab*_*tto 9

  1. 验证您的设置文件是否已正确配置

  2. 设置SESSION_COOKIE_SECURE = True在设置文件

  3. 您可以通过在交互式 Shell 中运行 Django 应用程序来测试更改,以检查变量是否已更改:

from django.conf import settings
settings.SESSION_COOKIE_SECURE # it should be printing "True"
Run Code Online (Sandbox Code Playgroud)

重要提示:如果您通过 HTTP 而不是 HTTPS 运行应用程序(在我们的本地机器上通常是这种情况),即使将该变量设置为 true,会话 cookie 也不会被加密。它仅适用于 HTTPS 连接。

  • 我们在 AWS 上有一个负载均衡器。到负载均衡器的流量通过 HTTPS,但从负载均衡器到 EC2 实例的流量是 HTTP。我已经有 SESSION_COOKIE_SECURE = True 但 PCI 扫描给了我“不安全的 cookies”警告。我认为您答案中的“重要”注释部分解释了这一点。关于我能做什么有什么想法吗?@fabriciorissetto (3认同)
  • @gurel_kaynak 我刚刚发现了这一点。您应该配置反向代理或负载均衡器以向请求添加标头,并将 Django 中的 SECURE_PROXY_SSL_HEADER 设置为相同的值。https://docs.djangoproject.com/en/3.2/ref/settings/#secure-proxy-ssl-header (2认同)