2016-12-19 3 views
2

До сих пор я использовал Django == 1.9.6 на моей машине-бродяге внутри virtualenv. Однако я создал новую виртуальную среду для тестирования нового Django и установил последнюю версию Django (версия 1.10.4). И я ничего не делал, а просто побежал серверDjango: DisallowedHost в новой версии Django

sudo python manage.py runserver 0.0.0.0:80 

Когда я попытался открыть URL, вместо Welcome to Django, я получил сообщение об ошибке:

DisallowedHost at/

Invalid HTTP_HOST header: 55.55.55.5

я однако исправленный это, установив IP-адрес моей бродяжной машины (55.55.55.5) в список ALLOWED_HOST.

Было ли это реализовано в новой версии Django или эта функция уже была в предыдущих версиях Django, но ошибка возникла из-за плохой конфигурации в моих настройках?

ответ

3

согласно (отлично) docs:

Changed in Django 1.10.3:

In older versions, ALLOWED_HOSTS wasn’t checked if DEBUG=True. This was also changed in Django 1.9.11 and 1.8.16 to prevent a DNS rebinding attack.

(курсив мой)

Смотрите также примечания к выпуску 1.9.11 (как отмечено @Sayse) для обоснования этого изменения:

While Django doesn’t ship a module that allows remote code execution, this is at least a cross-site scripting vector, which could be quite serious if developers load a copy of the production database in development or connect to some production services for which there’s no development instance, for example.