Подтвердить что ты не робот

Что означает "[ValidateAntiForgeryToken]"?

Во-первых, я все еще стартер в MVC4, заметив, что многие действия украшены [ValidateAntiForgeryToken], я googled, но все равно путаюсь.

Может кто-нибудь объяснить эту концепцию, используя простейший пример?

4b9b3361

Ответ 1

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

Как это работает. У вас AntiForgeryToken в вашем Html.BeginForm в представлении.

@using (Html.BeginForm()){

@Html.AntiForgeryToken()

//** fields of form

}

При отправке формы вы отправляете данные в свой метод контроллера. Если метод имеет атрибут ValidateAntiForgeryToken, он проверяет, имеет ли отправленный вами файл ForgeryToken.

[ValidateAntiForgeryToken]
public ViewResult Update()
{
}

ForgeryToken генерируется один раз за сеанс.

Ответ 2

Много информации об AntiForgeryToken здесь: http://blog.codeville.net/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

Это необходимо для предотвращения перекрестного запроса запроса (CSRF). Это довольно стандартное поведение, чтобы щелкнуть "Сохранить" в форме и выполнить некоторые действия на сервере, т.е. Сохранить данные пользователя. Как вы знаете, что пользователь, представляющий форму, является пользователем, которого они утверждают? В большинстве случаев вы должны использовать некоторые файлы cookie или windows на основе auth.

Что делать, если злоумышленник заманит вас на сайт, который представляет точно такую ​​же форму в небольшом скрытом IFRAME? Ваши файлы cookie отправляются неповрежденными, и сервер не видит запрос как отличный от допустимого запроса. (Поскольку gmail обнаружил: http://www.gnucitizen.org/blog/google-gmail-e-mail-hijack-technique/)

токен анти-подделки предотвращает эту форму атаки, создавая дополнительный токен cookie каждый раз, когда создается страница. Токен как в форме, так и в файле cookie, если форма и cookie не совпадают, мы имеем атаку CSRF (так как злоумышленник не сможет прочитать токен анти-подделки, используя описанную выше атаку).

И что делает соль, из статьи выше:

Соль - это просто произвольная строка. Другое значение соли означает, что будет создан другой токен анти-подделки. Это означает, что даже если злоумышленнику удается каким-то образом удержать действительный токен, они не могут повторно использовать его в других частях приложения, где требуется другое значение соли.

Как генерируется токен? Загрузите источник и посмотрите классы AntiForgeryDataSerializer, AntiForgeryData. У этого есть дубликат.