DEBUG = True Django

В производственной среде, почему я слышу, что люди говорят, что отказ от DEBUG = True потенциально опасен?

Что такое один пример, когда кто-то может использовать эту проблему безопасности для выполнения вредоносной задачи на моем сервере?

Ответы

Ответ 1

https://docs.djangoproject.com/en/dev/ref/settings/#debug

"Никогда не развертывайте сайт в процессе работы с включенным DEBUG.

Вы поймали это? НИКОГДА не развертывайте сайт в процессе работы с включенным DEBUG.

Одной из основных особенностей режима отладки является отображение подробных страниц ошибок. Если ваше приложение вызывает исключение, когда DEBUG равно True, Django отобразит подробную трассировку, включая множество метаданных о вашей среде, таких как все установленные в настоящее время настройки Django (от settings.py). "

В принципе, это зияющая дыра в безопасности.

Он также тратит много памяти:

"Также важно помнить, что при запуске с включенным DEBUG, Django будет помнить каждый выполняемый SQL-запрос. Это полезно, когда вы отлаживаете, но он быстро потребляет память на производственном сервере."

Ответ 2

Django пытается обезвредить защищенную информацию на странице отладки, но она не идеальна.

По умолчанию любые настройки, которые включают KEY (запуск Django 1.4), SECRET и т.д., автоматически заменяются на *. Однако, если кто-то решает сделать объявление и вызвать SECRET как SECURE_STR или что-то еще, это будет отображаться как обычный текст! Хочешь этого? Кроме того, это просто больше корма для того, чтобы кто-то легко взломал ваш сервер.