Это не обычный вопрос: «Безопасно ли хранить пароли пользователей обычного текста?». Нет, это небезопасно, мы все это знаем.Хранение паролей для аутентификации в другой системе
Я пишу небольшое приложение, которое должно пройти аутентификацию против внешней системы, чтобы сделать некоторые вещи, и единственный доступный метод аутентификации - через имя пользователя и пароль. Он был предназначен для людей и не может быть изменен.
Существует несколько пользователей, имеющих доступ к моему приложению, и каждый из них аутентифицируется отдельно, однако все они «совместно используют» те же данные аутентификации против внешней системы, которые идеально управляются прозрачно приложением.
«Тупым» решением является сохранение имени пользователя/пароля в текстовом виде и использование его для аутентификации, но, очевидно, это небезопасно. Пароли могут быть зашифрованы, но что, если кто-то ворвется в систему?
Возможное решение: использовать DPAPI для шифрования/дешифрования пароля (и, возможно, даже имени пользователя) прозрачно. Это хорошая идея? Это безопасно? Как насчет настроек с несколькими компьютерами (совместимо ли шифрование между машинами)?
Есть ли у вас дополнительные предложения?
Я думаю, что DPAPI вероятно, ваша лучшая возможность. Я не понимаю, что вы имеете в виду в отношении веб-ферм, хотя ... –
Я не уверен, что это именно то, что вы ищете, но как насчет решения хэширования, такого как DBM и такое использование? Хешируйте пароль пользователя для хранения, и когда они аутентифицируются, хешируют пароль, который они предоставляют, и сравнивают его с существующим хэшем. Это обычно используемый способ хранения паролей. P.S. - В зависимости от уровня безопасности, который вы хотите/нуждаетесь, я бы рекомендовал солить ваши хэши, чтобы избежать атак типа радужного стола. См. Последнюю версию статьи «2600» для статьи о том, как Microsoft долго хранит пароли пользователей с несоленными хэшами. –
@Bob: не то, что было задано! Ему нужен пароль, потому что он отправляет его во внешнюю систему. Он аутентифицируется против кого-то другого, не аутентифицируется в его системе. –