FormsAuthentication по-прежнему работает между сеансами после смены пароля

Я использую аутентификацию ванильных форм. Если у меня открыто несколько сеансов от одного и того же пользователя, и я меняю пароль в одном сеансе, другой сеанс все равно проходит аутентификацию.

Я ожидаю, что второй сеанс снова предложит мне ввести мои учетные данные.

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

Мне кажется дыра в безопасности.


person mattdwen    schedule 12.05.2012    source источник
comment
вам придется заставить это самостоятельно, и я не уверен, стоит ли это того. как только вы аутентифицированы, вы аутентифицированы до тех пор, пока не выйдете из системы, не истечет время ожидания, не удалите файл cookie и т. д.   -  person peroija    schedule 12.05.2012
comment
Что, если украдут ноутбук или что-то еще, для входа в систему с помощью постоянного файла cookie? Я предполагаю, что изменение моего пароля приведет к деавторизации всех других сеансов.   -  person mattdwen    schedule 12.05.2012


Ответы (2)


Это ожидаемое поведение. FormsAuthentication хранит только информацию о пользователе (с некоторыми другими данными для проверки того, что сервер действительно создал этот файл cookie). Сам файл cookie является действительным удостоверением (или билетом, или требованием). Если вас это беспокоит, вам следует сократить время действия файла cookie формы или, возможно, еще чаще звонить домой, чтобы спросить сервер, произошло ли изменение пароля, и если это так, выполните действие FormsAuthentication.SignOut(), чтобы принудительно выполнить повторную проверку. авторизоваться.

Возможно, не то, что вы хотите, чтобы FormsAuthentication делала, а то, что она делает.

Надеюсь это поможет.

person Mirko    schedule 12.05.2012

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

person peroija    schedule 12.05.2012