14

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

4

3 回答 3

26

CSRF_COOKIE_HTTPONLYDjango 1.6+ 中提供了一个新设置。

于 2013-08-27T02:50:36.793 回答
15

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

您可以覆盖并使用自定义的process_response()方法而不是indjango.middleware.csrf.CsrfViewMiddlewareCsrfViewMiddlewareMIDDLEWARE_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或者在响应之后调用的另一个中间件中

class Foo(object):
    def process_response(self, request, response):
        if settings.CSRF_COOKIE_NAME in response.cookies:
            response.cookies[settings.CSRF_COOKIE_NAME]['httponly'] = True
        return response
于 2012-06-02T11:22:27.783 回答
1

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

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

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

提供显示编辑的图片以防 github 消失。

这是该页面的其余部分。

这些编辑的图像 这些编辑的图像

您不必担心这些会被升级覆盖,因为升级本身会包含这些行。

于 2016-01-27T23:12:28.903 回答