Django CSRF cookie HttpOnly
Можно ли установить cookie django csrf только для http? Похож на SESSION_COOKIE_HTTPONLY
с cookie сессии, но для csrf?
3 ответа
Новая настройка, CSRF_COOKIE_HTTPONLY
, доступно в Django 1.6+.
Для Django1.6+, проверьте принятый ответ. Для Django1.5 и prev нет опции для этого.
Вы можете переопределить process_response()
метод 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
в ответ
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
Вы могли бы на самом деле исправить свои файлы Django, чтобы имитировать функциональность, присутствующую в более поздних версиях, если у вас версия ниже 1.6.
Патч довольно прост, и измененные файлы видны здесь:
https://github.com/django/django/commit/720888a14699a80a6cd07d32514b9dcd5b1005fb
Снимки, показывающие правки, предоставляются на случай, если GitHub исчезнет.
Вот остальная часть этой страницы.
Вам не нужно беспокоиться о том, что они будут перезаписаны при обновлении, поскольку обновление будет включать эти строки.