2011-04-06 3 views
0

Я хочу защитить отдельные (динамические) страницы в приложении ASP.NET MVC.Простая защита паролем на странице ASP.NET MVC

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

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

Итак, первый вопрос - это лучший (самый безопасный) подход (помимо использования проверки подлинности форм)?

Второй вопрос: могу ли я прочитать машинный ключ, используемый для проверки подлинности форм, для выполнения шифрования, или еще лучше использовать FormsAuthentication для шифрования файла cookie (единственная перегрузка, которую я вижу, - это та, которая требует FormsAuthenticationTicket)?

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

[Update]

относительно того, как получить доступ к ключу машины я нашел свой ответ на http://rich-rogers.com/archive/asp.net-c-sharp-encrypt-hash-using-machinekey-values

[Update 2]

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

ответ

1

Чтобы обеспечить надежную защиту вашего ключа cookie, вам необходимо сделать его доступным только на страницах SSL, иначе кто-то сможет его получить, и даже если он зашифрован, он сможет его использовать.

Request.Cookies[cookieName].HttpOnly = true; 
    Request.Cookies[cookieName].Secure = true; 

Также читать: Can some hacker steal the cookie from a user and login with that name on a web site?

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