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

Java - Как хранить пароль, используемый в приложении?

Я разрабатываю приложение, которое считывает некоторые данные из db. Соединение с db выполняется с помощью стандартного механизма входа/пароля.

Проблема заключается в следующем: как сохранить пароль db? Если я сохраню его как член класса, его можно легко извлечь через операцию декомпиляции.

Я думаю, что обфускация не решает проблему, так как пароль строки можно легко найти и в обфускационном коде.

У кого есть предложения?

4b9b3361

Ответ 1

Никогда не записывайте пароли в свой код. Это было недавно поднято в Топ-25 самых опасных ошибок программирования

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

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

Смотрите этот замечательный ответ для более подробного объяснения: Уильям Брендель

Ответ 2

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

Ответ 3

Некоторые данные должны быть конфигурируемы. Как только вы сказали, это могут быть username и password или некоторые общие datas; Обычно мы создаем страницу конфигурации свойств. То, что я использовал, это использовать файл XML, сохранить password/username в некотором encrypted формате. Вы можете легко проанализировать XML, чтобы получить свой пароль для подключения.

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