csrf и маркер защиты от подделки в MVC 2, не хочу проверять сообщение ajax - PullRequest
0 голосов
/ 26 марта 2012

Я хочу использовать ValidateAntiForgeryToken, но ... Я хочу использовать его только для действий что я делаю обычный пост. и не ajax с JSON. потому что регулярно злоумышленник будет остановлен междоменным ограничением. мой вопрос таков:

если у меня есть действие, которое я знаю, я вызываю только публикацию JSON в AJAX, и в этом случае antiforgerytoken не работает, поэтому я хочу убедиться, что запрос действительно является запросом ajax, что означает, что он действительно с моего сайта Как я могу сделать это в ASP.Net MVC 2?

поэтому моя общая идея состоит в том, чтобы: поставить атрибут ValidateAntiForgeryToken на все действия с обычной публикацией. и проверить, что сообщение действительно является сообщением ajax во всех других действиях

так, как я могу убедиться, что сообщение для действия действительно AJAX, а не просто сообщение?

спасибо

1 Ответ

0 голосов
/ 08 мая 2012

Вы должны написать свой собственный атрибут ValidateAntiForgeryTokenAttribute.

Я бы просто взял источник существующего атрибута и скопировал его в свой выигранный класс, а затем изменил его так, чтобы метод OnAuthorization проверял «filterContext.RequestContext.HttpContext.Request.IsAjaxRequest» и выполнял проверку CSRF только в том случае, если это ложно. .

Вы также можете легко прикрепить токен CSRF к вашим запросам AJAX, что, я бы сказал, было бы лучшим решением вашей проблемы

...