Django allowed hosts (settings.ALLOWED_HOSTS)

ALLOWED_HOSTS — это список хостов/доменов, для которых может работать текущий сайт. Это сделано для безопасности, чтобы обезопасить от внедрения в куки или письма для сброса пароля ссылок на сторонний сайт подменив HTTP заголовок Host, что возможно при многих, казалось бы безопасных, конфигурациях сервера.

По умолчанию: [] (Пустой список)

При DEBUG равном True и при выполнении тестов проверка отключена. Проверка обычно нужна только на боевом сервере.

Возможные значения

Согласно документации переменная ALLOWED_HOSTS может принимать список следующего содержания:

  1. Полное имя домена. Например: ‘www.example.com’ или ‘example.com’. Тогда значение заголовка Host будет сравниваться с этим значением (проверка без учета регистра и порта).
  2. Значение для проверки и поддоменов: ‘.example.com’, удовлетворяет ‘example.com’, ‘www.example.com’ и всем поддоменам ‘example.com’.
  3. Значение ‘*’ принимает все значения, в этом случае вы сами должны проверять заголовок Host (возможно в middleware, при этом укажите его в MIDDLEWARE_CLASSES).

Django также позволяет использовать полное доменное имя (FQDN). Некоторые браузеры добавляют точку в конце заголовка Host, которую Django удаляет перед проверкой хоста.

Если заголовок Host (или X-Forwarded-Host при USE_X_FORWARDED_HOST) не совпадает ни с одним значением, метод django.http.HttpRequest.get_host() вызовет исключение SuspiciousOperation.

Проверка выполняется только в методе get_host(), если вы используете значение заголовка Host непосредственно из request.META, проверка не будет выполнена.

Добавить комментарий

Ваш e-mail не будет опубликован.