Django CSRF cookie HttpOnly

时间:2012-06-02 11:01:24

标签: django csrf httponly

是否可以将django csrf cookie设置为仅限http?类似于会话cookie的SESSION_COOKIE_HTTPONLY,但对于csrf一个?

3 个答案:

答案 0 :(得分:20)

Django 1.6 +中提供了新设置CSRF_COOKIE_HTTPONLY

答案 1 :(得分:11)

对于Django1.6 +,请检查接受的答案。对于Django1.5和prev,没有为此设置选项。

您可以覆盖process_response()的{​​{1}}方法并使用自定义的方法,而不是django.middleware.csrf.CsrfViewMiddleware中的CsrfViewMiddleware

MIDDLEWARE_CLASSES

或者在响应中class Foo(CsrfViewMiddleware): def process_response(self, request, response): response = super(Foo, self).process_response(request, response) response.cookies[settings.CSRF_COOKIE_NAME]['httponly'] = True return response 之后调用的另一个中间件

CsrfViewMiddleware

答案 2 :(得分:0)

如果您的版本低于1.6,您实际上可以自己修补Django文件以模仿更高版本中的功能。

补丁很简单,修改过的文件在这里可见:

https://github.com/django/django/commit/720888a14699a80a6cd07d32514b9dcd5b1005fb

Pictures showing the edits are provided in case github goes away.

Here's the rest of that page.

Image of those edits Image of those edits

您无需担心升级会覆盖这些内容,因为升级会自行包含这些内容。