ValidateAntiForgeryToken цель, объяснение и пример

не могли бы вы объяснить ValidateAntiForgeryToken цель и покажите мне пример о ValidateAntiForgeryToken в MVC 4?

Я не смог найти примеров, объясняющих этот атрибут?

2 ответов


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

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

функция не предотвращает любой другой тип подделки данных или подделки атак на основе.

чтобы использовать его, украсьте метод действия или контроллер с ValidateAntiForgeryToken атрибут и вызовите @Html.AntiForgeryToken() в формах разноска по методу.


основной целью атрибута ValidateAntiForgeryToken является предотвращение атак подделки межсайтовых запросов.

подделка межсайтового запроса-это атака, при которой злоумышленник отправляет вредоносный элемент сценария или вредоносную команду или код из браузера доверенного пользователя.Для получения дополнительной информации о подделке межсайтового запроса, пожалуйста, посетите http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages.

Он прост в использовании, вам нужно чтобы украсить метод атрибутом ValidateAntiForgeryToken, как показано ниже:

[HttpPost]  
[ValidateAntiForgeryToken]  
public ActionResult CreateProduct(Product product)  
{
  if (ModelState.IsValid)  
  {
    //your logic 
  }
  return View(ModelName);
}

Он получен из системы.сеть.пространства имен в MVC

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

@Html.AntiForgeryToken()