Это нормально, что учетные данные базы данных хранятся в виде простого текста? - PullRequest
29 голосов
/ 22 августа 2010

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

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

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

Ответы [ 3 ]

24 голосов
/ 22 августа 2010

Вы правы. Но вы можете повысить безопасность на:

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

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

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

14 голосов
/ 06 декабря 2015

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

строгое отделение конфига от кода.

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

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

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

2 голосов
/ 22 августа 2010

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

Существуют способы предотвращения подключения недопустимых узлов (таблицы ip, частные адреса ip), но фактические сведения о подключении почти всегда представляют собой простой текст.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...