Django CSRF cookie HttpOnly
можно ли установить файл cookie Django csrf только для http? Так SESSION_COOKIE_HTTPONLY
с сеансовым cookie, но для csrf?
3 ответов
Для 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 уходит.
вам не нужно беспокоиться о том, что они будут перезаписаны обновлением, так как обновление будет включать в себя эти строки.