Предотвращение атак воспроизведения файлов cookie в ASP.Net MVC

Мне было поручено реализовать пункт 4 в этой статье: http://support.microsoft.com/kb/900111

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

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

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


person Jack Ryan    schedule 22.01.2010    source источник


Ответы (2)


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

Да, ты можешь это сделать. Поставщик членства хранит небольшой набор данных о пользователе (имя пользователя, адрес электронной почты, пароль, последний вход в систему, вопрос о потерянном пароле, ответ на вопрос о потерянном пароле и т. д.).

Если вы не хотите модернизировать поставщика членства, я бы выбрал подход, о котором вы упомянули. Независимо от того, записывается ли информация в поле комментария таблицы aspnet_Users или в битовое поле вашей собственной таблицы, это не должно иметь никакого значения.

Вы также можете подумать о том, чтобы добавить в интерфейс свой код членства/аутентификации. Затем вы можете поменять свой текущий код на реализацию поставщика членства, когда это будет более удобно.

person 37Stars    schedule 22.01.2010

Я нашел MembershipProvider очень полезным. Это позволяет мне как разработчику использовать SQLMembershipProvider для локальной базы данных пользователей, а затем, когда я перемещаю его в рабочую среду, просто использовать ActiveDirectoryMembershipProvider, и мне не нужно менять строку кода (за исключением моего web.config файл).

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

Если вы решите перейти на схему MembershipProvider, я не думаю, что вы пожалеете об этом. Это может быть болезненно в краткосрочной перспективе, но в долгосрочной перспективе, я думаю, вы увидите, что это окупится. Поскольку у вас уже есть много вашего кода аутентификации, написанного в вашем контроллере, возможно, будет не так сложно объединить его с тем, как его использует MembershipProvider?

... есть ли способ реализовать минимального поставщика членства, чтобы выполнять эти проверки без передачи ему всего кода аутентификации?

MP — это один из тех случаев, когда лучше всего позволить ему делать то, что у него получается лучше всего. Если вы попытаетесь использовать только часть здесь и часть там, хотя это и возможно, это вызовет головную боль в будущем. Он знает, что должен делать, и обход этого, хотя и возможен, потребует дополнительной работы, которая может оказаться ненужной.

person Nick DeVore    schedule 22.01.2010