Итак, в прошлом я сохранял имя пользователя и пароль, используемые в cookie, а затем повторно аутентифицировал это при каждом запросе.
Вы должны не используйте этот подход.Пароль должен , а не храниться в билете аутентификации.Причина в том, что если аутентификационный билет скомпрометирован, то у злоумышленника есть пароль пользователя.Этот риск можно уменьшить, зашифровав cookie-файл билета проверки подлинности, но я предполагаю, что вы сохраняли cookie-файл в виде простого текста.
Меня беспокоит то, что при использовании вызова метода SetAuthCookie () имя пользователяхранится на клиентском компьютере.Тогда возможно ли, чтобы кто-то нарушил используемое шифрование и заменил имя пользователя, которое хранится, другим?
Как отметил Шираз, cookie сохраняется на клиентском компьютере, только если вы создаете постоянный cookie.(Один из параметров SetAuthCookie
указывает, создавать ли такой файл cookie или нет.
Даже если кто-то нарушил схему шифрования, чтобы изменить файл cookie для предоставления другого имени пользователя, он столкнется с проблемами из-за проверки подлинности.Билет также имеет цифровую подпись, что означает, что ASP.NET может определить, было ли изменено содержимое файла cookie. Чтобы создать цифровую подпись, злоумышленнику необходимо знать, какую соль использует сервер, и если пользователь может понять, что это подразумеваету него есть доступ к файловой системе вашего веб-сервера, так что теперь у вас есть большие проблемы.
Еще одна вещь, которую нужно понять, это то, что у билета аутентификации есть срок действия, который ограничивает срок действия билета.Таким образом, даже если кто-то захочет украсть куки пользователя, время, которое злоумышленнику придется использовать этот украденный билет, будет ограничено на основании значения timeout
, которое вы указываете для системы аутентификации форм (по умолчанию 30 минут).
В заключение, официальная форма ASP.NETСистема аутентификации будет намного более безопасной, чем то, что сможет реализовать одинокий разработчик.Разработчики должны стремиться использовать систему проверки подлинности на основе форм, а не использовать свое собственное решение по множеству причин, включая лучшую безопасность, отсутствие необходимости изобретать велосипед, применение стандартных методов, чтобы другие разработчики, присоединившиеся к команде, не имели такого большого обучениякривая, чтобы набрать скорость и т. д.
Для получения более подробной информации о системе проверки подлинности форм и о том, как защищен билет, как работают различные настройки конфигурации <forms>
и т. д., см .: Настройка проверки подлинности с помощью форм и дополнительные разделы .