2015-08-30 2 views
1

Я только что реализовал пример использования ASP.NET MVC, который использует атрибут [ValidateAntiForgeryToken] для предотвращения атаки CSRF.CSRF и ValidateAntiForgeryToken в ASP.Net mvc?

Для проверки этого я создаю фрагменты HTML, необходимые для того, чтобы сделать один и тот же запрос на отправку из другого приложения. В принципе, если я добавлю скрытое поле с зашифрованным значением токена в это стороннее приложение, я получаю успешный запрос на отправку. Так что я не нашел смысла в [ValidateAntiForgeryToken], если я могу увидеть скрытое значение, просто проверив html источник, лежащий в основе исходной формы. Может ли кто-нибудь дать мне представление о том, что это такое?

С другой стороны, основываясь на результатах моего предыдущего примера, интересно, мог ли злонамеренный пользователь с действительными учетными данными в приложении получить свой собственный токен и использовать его для создания почтового запроса от имени другого пользователя, и выполнить атаку CSRF,?

ответ

0

Может кто-нибудь дать мне представление о том, что реальный смысл этого?

Никто не может читать токен, кроме потенциальной жертвы атаки CSRF. Same Origin Policy запрещает другому сайту считывать токен из сеанса пользователя. Нет необходимости добавлять что-либо еще в токен, пока токен генерируется безопасным образом и уникален для сеанса браузера.

С другой стороны, база по результатам моего предыдущего примера, я удивительно, если Может ли злоумышленник с действительными учетными данными на приложении получить свой собственный маркер и использовать его для создания запроса поста на от имени другого пользователя и выполнить атаку CSRF,?

Токен должен быть уникальным для сеанса пользователя. Если Боб устанавливает атаку CSRF на evil.example.com и получает Алису, чтобы посетить его сайт, в то же время она зарегистрирована в bank.example.org и отправляет свой собственный токен анти-CSRF, приложение должно отклонить этот токен, потому что оно не соответствует сеансу Алисы.

(Следует также зарегистрировать это как событие безопасности.)

1

Да Возможно, так, как вы это делали. Но вы можете расширить защиту, расширив текущую реализацию токена Anti-подделки, добавив другие скрытые/зашифрованные поля, которые содержат информацию агента.

Следуя примеру вы знаете, как создавать пользовательские AntiForgery Токен

http://techbrij.com/angularjs-antiforgerytoken-asp-net-mvc

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