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

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

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

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

33
задан cloudshao 22 August 2010 в 05:44
поделиться

2 ответа

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

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

  • Хранить файл вне www или htdocs root. Если в этот момент у злоумышленника все еще есть к ним доступ, вам все равно конец.

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

24
ответ дан 27 November 2019 в 18:33
поделиться

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

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

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

2
ответ дан 27 November 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: