Как мне сохранить известный / жестко запрограммированный пароль в базе данных? - PullRequest
0 голосов
/ 19 марта 2019

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

Моя первоначальная мысль - сохранить эти данные в базе данных, которая используется для поддержки веб-сайта. Я хочу сохранить его так, чтобы его нелегко было взломать (т.е. я не собираюсь хранить его как обычный текст или как хэш MD5). Должен ли я следовать тому же формату, который используется для хранения паролей пользователя веб-сайта, где я использую генератор случайных чисел для создания СОЛЬ для каждого пароля, а затем сохраняю пароль как хешированную комбинацию пароля и СОЛЬ, или это будет излишним?

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

После дальнейших исследований я решил на этой стадии придерживаться следующих идей:

Шифрование столбца данных - SQL Server | Документы Microsoft

... и шифровать / дешифровать в БД внутри хранимой процедуры.

0 голосов
/ 20 марта 2019

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

Теперь сохранение его в БД или в файлах конфигурации - выбор, который вам нужно выбрать в зависимости от вашего приложения.

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

В нашем продукте мы имеем дело с такой ситуацией, используя 2 Way SSL Certificates. Это очень безопасно и нет необходимости хранить пароли.

Но если вам действительно нужно хранить пароли, тогда я предложу использовать configuration file и позволить вашему приложению прочитать его. Вы можете зашифровать пароли, хранящиеся в configuration files (Шифрование паролей, хранящихся в configuration file, снова вернет вас к тому же вопросу о том, как защитить ключ). Доступ к configuration file должен быть ограничен (в Unix 600 File Permission).

В качестве альтернативы, если ваше веб-приложение на Java, вы можете рассмотреть возможность использования JNDI .

...