Подтвердить что ты не робот

Все в порядке, что учетные данные базы данных хранятся в виде простого текста?

По умолчанию хост/пользователь/пароль базы данных Django хранятся в файле settings.py проекта в виде обычного текста.

Кажется, я не думаю о лучшем способе на данный момент, но это, похоже, против лучших методов хранения паролей. Конечно, если у злоумышленника есть доступ к файлу настроек, все, вероятно, уже потеряно. Даже если файл был зашифрован, у злоумышленника, вероятно, были бы средства для его расшифровки.

Это нормально?

4b9b3361

Ответ 1

Вы правы в том, что хранение паролей в незашифрованном виде и в файле settings.py не является надежной защитой. Вы можете повысить безопасность на:

  • Правильная установка разрешений (это будет зависеть от вашей настройки). В идеале только питон должен быть в состоянии прочитать файл.

  • Сохранение файла из корня www или htdocs. Если на этом этапе злоумышленник все еще имеет к ним доступ, вы все равно облажались.

  • Для дополнительной безопасности вы можете зашифровать настройки соединения с помощью симметричного шифрования (например, AES). Храните ключ где-нибудь еще. Поэтому, даже если кому-то удастся получить доступ к настройкам соединения, ему все равно нужно будет найти ключ. Основным недостатком является то, что теперь вам нужно переписать метод подключения.

Ответ 2

Двенадцатифакторное приложение, кодифицированное Heroku рекомендует

строгое разделение конфигурации с кодом.

Это особенно важно для управления учетными данными, которые в идеале никогда не должны быть привязаны к контролю источника.

Библиотека django-environ дает хороший подход к вытаскиванию большинства конфигураций, зависящих от среды, из файла settings.py, но вы могли бы пройти долгий путь, просто ссылки на наиболее чувствительные биты со стандартной библиотекой os, например 'PASSWORD': os.environ['DBPASS']

Конечно, вы, вероятно, по-прежнему будете хранить некоторые пароли в текстовом формате где-нибудь, но если этот файл не встроен в вашу кодовую базу, он вряд ли будет протекать.

Ответ 3

Да, это стандартная процедура для любой программы обмена базами данных. Действительно, для этого не существует "лучшего способа".

Есть способы помочь предотвратить подключение недействительных хостов (ip-таблицы, частные IP-адреса), но фактические данные соединения почти всегда являются обычным текстом.

Сохранение файла за пределами корня веб-сайта поможет некоторым, но если злоумышленник имеет доступ к файловой системе, это не имеет значения.