Я разрабатываю веб-приложение, для которого конечным пользователям необходимо создать учетную запись. Эта часть очень проста: я буду использовать свои пароли с SHA-256, чтобы никто, кроме самого пользователя, не знал пароль. Теперь сложная часть. После создания учетной записи пользователь должен указать пароль своего почтового сервера. Теперь встает вопрос: как я могу защитить этот пароль прилично (пароль будет храниться в базе данных)? Если я зашифрую пароль с помощью TripleDES, любой разработчик или системный администратор сможет расшифровать пароль и посмотреть его. Каков обычный способ справиться с такой проблемой? Большое спасибо.Как защитить конфиденциальные пароли, хранящиеся в базе данных
ответ
Обычный способ сделать это - использовать симметричный ключ шифрования, который получен из пароля пользователя. Стандартный способ сделать это - использовать алгоритм, указанный в RFC2898, который генерирует набор криптографически безопасных байтов, которые вы можете использовать в качестве ключа и IV. Вероятно, это поддерживается библиотекой для вашего языка, например .NET, и это то, что я использую, имеет класс Rfc2898DeriveBytes.
Конечно, когда ваш пользователь меняет свой пароль, вам придется расшифровать любой существующий шифрованный текст, а затем вывести новый ключ и повторно зашифровать.
Ссылка на класс: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx. – AxelEckenberger
Предостережение: это означает, что вам необходимо передать пароль пользователя от клиента на сервер, чтобы соединение было безопасным. Одним из преимуществ хеширующих паролей является то, что вы можете хэш-запись пользователя на клиентской машине, а затем передавать только хэш на сервер. Но, предполагая безопасное соединение, предложение blowdart имеет огромное преимущество использования другого ключа шифрования для данных каждого пользователя, что значительно снижает угрозу компрометации. –
Как правило, вы * * передаете пароль пользователя от клиента к серверу, но как только он достигает сервера, вы затем хэшируете его для сравнения. Итак, что бы вы делали, одновременно с хэшированием для проверки пароля вы должны получить ключ и поместить его в состояние сеанса на сервере, чтобы вы могли использовать его на протяжении всего сеанса пользователя. – blowdart
- 1. Как защитить пароли, хранящиеся в web.config?
- 2. Как защитить идентификаторы электронной почты, хранящиеся в базе данных?
- 3. Как защитить конфиденциальные пароли в моих веб-приложениях/службах C#?
- 4. Как защитить пароли базы данных в PHP?
- 5. Как защитить свои пароли?
- 6. Как безопасно хранить пароли в базе данных?
- 7. Как хранить конфиденциальные данные в базе данных?
- 8. Как защитить пароли в приложении Android
- 9. Как я могу защитить пароли данных localstorage?
- 10. Как защитить конфиденциальные данные в URL-адресах
- 11. Как защитить пароли на AppHarbor-приложение, с сервис-крюком GitHub
- 12. Как хранить пароли в базе данных?
- 13. Как использовать конфиденциальные пароли, необходимые для запуска скриптов в RunDeck?
- 14. Как защитить пароли базы данных, настроить файл в PHP?
- 15. Как защитить (зашифровать) данные, хранящиеся в webkit/local store
- 16. Как защитить активы, хранящиеся в Android APK
- 17. VB 2010 Храните пароли в базе данных
- 18. Как хранить конфиденциальные данные в базе данных MySQL?
- 19. Как вы будете обрабатывать конфиденциальные данные в своей базе данных?
- 20. Как защитить пользовательские данные в базе данных с помощью Rails?
- 21. Безопасные пароли открытого текста в базе данных
- 22. Сохраняет пароли в базе данных без шифрования _bug_?
- 23. Акцентированные символы, хранящиеся в базе данных MySQL
- 24. шаблоны калитки, хранящиеся в базе данных
- 25. Невозможно отобразить BLOB, хранящиеся в базе данных
- 26. данные Yii2 перевод, хранящиеся в базе данных
- 27. Распечатайте все обзоры, хранящиеся в базе данных
- 28. Сегменты Rails, хранящиеся в базе данных
- 29. Соли, хранящиеся неправильно в базе данных.!
- 30. Одиночные кавычки, хранящиеся в базе данных Postgres
Разработчики не должны иметь доступ к производственной базе данных. – Giorgi
Возможно, вы не контролируете, какие почтовые серверы используют пользователи, но для таких случаев, когда пользователь хочет, чтобы вторая сторона (вы) получила доступ к некоторым своим ресурсам, размещенным сторонней стороной (почтовым сервером пользователя) не обнаружив пароль третьей стороны, был изобретен 3-legged-oauth – keppla