Я рассматриваю возможность хранения введенного пользователем пароля в состоянии сеанса. Существуют ли какие-либо угрозы безопасности или проблемы, которые мне нужно знать?Хранение пароля в сеансе
ответ
Да. Это просто плохая идея. Вы даже не должны хранить пароли в базе данных - лучше всего хранить хэши паролей. Таким образом, вы можете проверить пароль, но если кто-то получит доступ к базе данных (или состоянию сеанса в вашем случае), у них фактически нет пароля пользователя.
Но состояние сеанса не обязательно в базе данных, что сделает ее более безопасной. Хорошо ли хранить пароли в состоянии сеанса, если состояние сеанса не сохраняется? – BlueMonkMN
пароли никогда не должны храниться нигде. salt + hash, как только они попадают на сервер, а затем работают только с этим результатом. вам не нужно когда-либо работать с сырым паролем пользователя. –
Я с этим согласен, но я понимаю, что это идеалистический мир, и я не знаю, что мы живем в этом мире. Когда веб-сервер должен взаимодействовать с сторонними компонентами, которые не поддерживают аутентификацию на основе токенов, пароль является единственным способом. Сайт, который я использую для электронного биллинга, запрашивает мой пароль, чтобы он мог получать счета от третьих лиц. Я подозреваю, что он хранит что-то, что может позволить кому-то еще войти в систему тем третьим лицам, если они завладеют этими данными. Я просто не думаю, что сайты обеспечивают идеальный интерфейс. – BlueMonkMN
В asp.net есть много мест, где хранятся данные сеанса. Чаще всего в разработке, это InProc или в основном в ОЗУ. Однако однажды вы можете решить использовать другого поставщика сеанса, например базу данных, или использовать кэш Windows Azure. Хранение паролей в открытом тексте сделает их видимыми, когда они передаются по сети в обоих случаях.
В приведенном выше сценарии, когда данные сеанса перемещаются по сети, если передача не передана по https, будут отображаться четкие пароли.
ваш ответ не имеет отношения к вопросу –
@palmsnow На самом деле, ответ оливкового дерева был по-теме; он указывал, что включение паролей в «Session» может привести к тому, что пароль будет отправлен по проводу в открытом виде, поскольку в какой-то момент вы можете использовать механизм хранения внешнего сеанса. Я думаю, что это хороший момент. +1 –
@AndrewBarber thats only true, если вы не используете безопасный канал между вашими серверами, что было бы довольно глупой штукой –
- 1. Хранение пароля LDAP в сеансе django
- 2. Хранение массива в сеансе
- 3. Хранение объекта в сеансе
- 4. Хранение массива в сеансе
- 5. Передача пароля в сеансе
- 6. Хранение нескольких элементов в сеансе
- 7. хранение ключа в переменном сеансе
- 8. Хранение объектов в сеансе PHP
- 9. Хранение извлеченного значения в сеансе
- 10. Хранение набора данных в сеансе
- 11. Хранение данных переключателя в сеансе
- 12. Хранение аутентификации пользователя в сеансе
- 13. iOS: Хранение Непользовательского пароля
- 14. Безопасное хранение пароля локально
- 15. Хранение пароля пользователя временно
- 16. Хранение пароля безопасно nodemailer
- 17. Хранение пароля в пакете SSIS
- 18. Хранение пароля в контейнере AES
- 19. Снятие пароля или хранение неуправляемого пароля C#
- 20. хранение даты и времени в сеансе
- 21. Хранение данных пользователя в сеансе - стандартная практика
- 22. ASP.NET Хранение данных торговой марки в сеансе
- 23. Хранение данных в AppState и сеансе
- 24. Zend 2 Хранение значения в сеансе
- 25. Хранение данных в сеансе при аутентификации пользователя
- 26. Хранение продуктов в сеансе с zend
- 27. Хранение истории навигации пользователя в cookie/сеансе
- 28. Хранение нескольких решений CAPTCHA в сеансе
- 29. Laravel - хранение в сеансе от поставщика услуг?
- 30. Хранение паролей в сеансе с вложенным ресурсом
прочитать эту соответствующую должность http://stackoverflow.com/questions/4862096/is-storing-login-and-password-hash-in-session-secure-net-c-sharp –