【问题标题】:SESSION_COOKIE_HTTPONLY = True not working in Django:SESSION_COOKIE_HTTPONLY = True 不能在 Django 中工作:
【发布时间】:2015-11-06 15:33:51
【问题描述】:

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

SESSION_COOKIE_HTTPONLY = True

尽管docs 说这是默认设置。

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

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

使用django 1.8accounts/login 页面由 django-registration-redux 管理,如果相关的话。

【问题讨论】:

    标签: django zap


    【解决方案1】:

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

    CSRF_COOKIE_HTTPONLY = True
    

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

    【讨论】:

    • 可以肯定地说设置CSRF_COOKIE_HTTPONLY = True 不会对仅https 的网站产生严重的安全隐患吗?
    • 我不是安全专家,所以我觉得没有资格给出明确的答案。如果您确实设置了CSRF_COOKIE_HTTPONLY=True,恶意javascript 仍然可以从令牌在html 中的页面加载令牌。 Django-developers 邮件列表上有一个相关的discussion
    猜你喜欢
    • 2016-02-16
    • 2012-05-09
    • 2011-06-22
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2018-06-18
    相关资源
    最近更新 更多