Ответ 1
Да, это все, что вам нужно сделать.
Пока вы создаете новый токен на каждой защищенной странице, <%= Html.AntiForgeryToken() %>
и всегда убедитесь, что он проверен в любом защищенном действии, используя [ValidateAntiForgeryToken]
Это реализует шаблон маркера синхронизатора, как обсуждалось в CryptFort Cheat Sheet в OWASP.
Чтобы script преуспеть в принятии приемлемого запроса, он должен сначала получить форму и прочитать токен, а затем опубликовать токен. Одинаковая политика происхождения будет помешать этому разрешить в браузере. Сайт canot делает HTTP-запрос стиля AJAX на другой сайт; только для себя. Если по какой-то причине одна и та же политика происхождения может быть нарушена, вы станете уязвимыми.
Обратите внимание, что если у вас есть уязвимость межсайтового скриптинга, злоумышленник может злоупотреблять уязвимостью xss, чтобы обойти защиту, предоставленную той же политикой происхождения (поскольку script теперь запущен с вашего собственного сайта, поэтому SOP преуспевает). Введенный script может затем счастливо прочитать и повторно отправить токен. Этот метод для предотвращения защиты CSRF через XSS был распространен в некоторых червях в последнее время. В принципе, если у вас есть XSS, ваша защита CSRF является пустой тратой времени, поэтому убедитесь, что вы тоже не уязвимы.
Еще одна вещь, на которую нужно обратить внимание - это Flash и Silverlight. Обе эти технологии не подписываются на одну и ту же политику происхождения и вместо этого используют файлы политики междоменной политики для ограничения доступа к удаленным ресурсам. Flash/Silverlight script может получать доступ только к ресурсам вашего сайта, если вы публикуете XML файл с перекрестной властью на своем собственном сайте. Если вы публикуете этот файл, только когда-либо разрешаете использовать белый список доверенных сторонних серверов и никогда не разрешаете *.
Подробнее о CSRF в OWASP См. Также: Xat Prevention Cheat Sheet