SESSION_COOKIE_HTTPONLY = True не работает в Django:

Я установил следующий код в моем settings.py:

SESSION_COOKIE_HTTPONLY = True

хотя в документах сказано, что это по умолчанию.

Тогда я использую ./manage.py runserver и запустите OWASP Zap сканер на сайте. Но OWASP zap говорит, что cookie был установлен без флага HttpOnly:

введите описание изображения здесь

У меня также есть эта проблема, когда я сервер сервера с gunicorn а также nginx, Как мне установить этот флаг?

С помощью django 1.8; страница accounts/login управляется django-registration-redux, если это актуально.

1 ответ

Решение

Файл cookie, выделенный вами на снимке экрана, - это не файл cookie сеанса, а файл cookie csrf. Есть отдельная настройка CSRF_COOKIE_HTTPONLY для этого печенья. В отличие от SESSION_COOKIE_HTTPONLY, CSRF_COOKIE_HTTPONLY по умолчанию False, так что вам нужно добавить его в настройках.

CSRF_COOKIE_HTTPONLY = True

Обратите внимание, что установка cookie csrf только на http усложнит выполнение запросов поста ajax. Вместо того, чтобы использовать cookie, ваш JavaScript должен будет вместо этого извлечь токен csrf со страницы.

Другие вопросы по тегам