регистрация - asp.net авторизация пользователя пример



Насколько безопасна аутентификация базовых форм в asp.net? (6)

Представьте, что у вас есть простой сайт всего с 2 страницами: login.aspx и secret.aspx. Ваш сайт защищен, используя только аутентификацию форм ASP.net и элемент управления сервером входа ASP.net на login.aspx. Подробности:

  • Сайт настроен на использование SqlMembershipProvider
  • Сайт отрицает всех анонимных пользователей
  • Файлы cookie отключены

Очевидно, что многое стоит рассмотреть в отношении безопасности, но меня больше интересует нулевой код из коробки, который поставляется с инфраструктурой .net.

Если, ради этого вопроса, единственными точками атаки являются текстовые поля username / password в login.aspx, может ли хакер вводить код, который позволит им получить доступ к нашей странице secret.aspx?

Насколько безопасен нулевой код из коробки, который предоставляет Microsoft?

https://src-bin.com



Answer #2

Asp.Net поддерживает сеансы cookieless, как показывает это сообщение в блоге . Вместо cookie сеанса он использует идентификатор в URL-адресе для отслеживания пользователей.

Я не уверен, насколько это безопасно, но я бы подумал, что это безопасно, поскольку сложность перебора принудительной идентичности.

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


Answer #3

Насколько я знаю, пароль будет отправлен как обычный текст (но закодирован). Поэтому самое главное - использовать протокол HTTPS на экранах входа.

Мне кажется, что другая настройка для меня безопасна.


Answer #4

Ну, попробуйте и загляните за кулисы:

Защита паролем

Приложения, которые хранят имена пользователей, пароли и другую информацию аутентификации в базе данных, никогда не должны хранить пароли в виде открытого текста, чтобы база данных не была украдена или не скомпрометирована. С этой целью SqlMembershipProvider поддерживает три формата хранения («кодировки») для паролей и ответов на пароли. Свойство PasswordFormat провайдера, которое инициализируется атрибутом конфигурации passwordFormat, определяет, какой формат используется:

  • MemberhipPasswordFormat.Clear, который хранит пароли и пароль в текстовом формате.
  • MemberhipPasswordFormat.Hashed (по умолчанию), в котором хранятся соленые хэши, созданные из паролей и ответов на пароли. Соль представляет собой случайное 128-битное значение, генерируемое классом RNGCryptoServiceProvider .NET Framework. Каждая пара паролей / паролей отвечает за это уникальное значение, а соль хранится в поле PasswordSalt таблицы aspnet_Membership. Результат хэширования пароля и соли сохраняется в поле Пароль. Аналогичным образом, результат хэширования пароля и соль сохраняется в поле PasswordAnswer.
  • MemberhipPasswordFormat.Encrypted, в котором хранятся зашифрованные пароли и ответы на пароли. SqlMembershipProvider шифрует пароли и ответы на пароли, используя симметричный ключ шифрования / дешифрования, указанный в атрибуте decryptionKey раздела конфигурации, и алгоритм шифрования, указанный в атрибуте дешифрования раздела конфигурации. SqlMembershipProvider выдает исключение, если его попросят шифровать пароли и ответы на пароли, а если decryptionKey установлен на Autogenerate. Это препятствует тому, чтобы база данных членства, содержащая зашифрованные пароли и пароли, становилась недействительной, если ее перемещали на другой сервер или другое приложение.

Таким образом, сила вашей безопасности (из коробки) будет зависеть от того, какую стратегию формата защиты паролем вы используете:

  • Если вы используете чистый текст, вам, очевидно, проще взломать вашу систему.
  • С другой стороны, с помощью Encrypted безопасность будет зависеть от физического доступа к вашему компьютеру (или, по крайней мере, machine.config).
  • Использование паролей Hashed (по умолчанию) гарантирует безопасность в зависимости от: a) известных изменений стратегии хэширования класса RNGCryptoServiceProvider и b) доступа к базе данных для компрометации случайно генерируемой соли.

Я не знаю, можно ли использовать какой-то взлом таблицы радуги в стандартную систему Hash-base по умолчанию.

Для получения дополнительной информации ознакомьтесь с этой ссылкой: http://msdn.microsoft.com/en-us/library/aa478949.aspx


Answer #5

Куки-файлы по URL-адресу недостаточно безопасны, с ним связано очень много различных проблем (особенно утечка реферера, если у вас есть) и использование HTTPS.


Answer #6

У вас все еще есть переменные, которые не учитываются:

  • Безопасность в хранилище данных, используемое вашим поставщиком членства (в данном случае, база данных Sql Server).
  • безопасность других сайтов, размещенных в одном и том же IIS
  • общая сетевая безопасность машин, участвующих в размещении сайта, или в той же сети, где размещен сайт
  • физическая безопасность машин, размещающих сайт
  • Используете ли вы соответствующие меры для шифрования трафика проверки подлинности? (HTTPS / SSL)

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

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





forms-authentication