SESSION_COOKIE_HTTPONLY = True 在 Django 中不起作用:

SESSION_COOKIE_HTTPONLY = True not working in Django:

我在 settings.py 中设置了以下代码:

SESSION_COOKIE_HTTPONLY = True

尽管 docs 说这是默认设置。

然后我在网站上使用 ./manage.py runserver 和 运行 OWASP Zap 扫描仪。但是 OWASP zap 说 cookie 是在没有 HttpOnly 标志的情况下设置的:

当我使用 gunicornnginx 服务器时,我也遇到了这个问题。我怎样才能设置这个标志?

使用django 1.8;如果相关,页面 accounts/logindjango-registration-redux 管理。

您在屏幕截图中突出显示的 cookie 不是会话 cookie,而是 csrf cookie。此 cookie 有一个单独的设置 CSRF_COOKIE_HTTPONLY。与SESSION_COOKIE_HTTPONLY不同,CSRF_COOKIE_HTTPONLY默认为False,所以需要在设置中添加。

CSRF_COOKIE_HTTPONLY = True

请注意,将 csrf cookie 设置为仅 http 会使执行 ajax post 请求变得更加棘手。您的 javascript 将不得不从页面中提取 csrf 令牌,而不是使用 cookie。