2011-12-16 3 views
0

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

+0

прочитать эту соответствующую должность http://stackoverflow.com/questions/4862096/is-storing-login-and-password-hash-in-session-secure-net-c-sharp –

ответ

3

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

+0

Но состояние сеанса не обязательно в базе данных, что сделает ее более безопасной. Хорошо ли хранить пароли в состоянии сеанса, если состояние сеанса не сохраняется? – BlueMonkMN

+0

пароли никогда не должны храниться нигде. salt + hash, как только они попадают на сервер, а затем работают только с этим результатом. вам не нужно когда-либо работать с сырым паролем пользователя. –

+0

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

1

В asp.net есть много мест, где хранятся данные сеанса. Чаще всего в разработке, это InProc или в основном в ОЗУ. Однако однажды вы можете решить использовать другого поставщика сеанса, например базу данных, или использовать кэш Windows Azure. Хранение паролей в открытом тексте сделает их видимыми, когда они передаются по сети в обоих случаях.

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

+0

ваш ответ не имеет отношения к вопросу –

+2

@palmsnow На самом деле, ответ оливкового дерева был по-теме; он указывал, что включение паролей в «Session» может привести к тому, что пароль будет отправлен по проводу в открытом виде, поскольку в какой-то момент вы можете использовать механизм хранения внешнего сеанса. Я думаю, что это хороший момент. +1 –

+0

@AndrewBarber thats only true, если вы не используете безопасный канал между вашими серверами, что было бы довольно глупой штукой –

Смежные вопросы