Когда использование AntiForgeryToken не требуется / необходимо? - PullRequest
23 голосов
/ 21 января 2011

UPD: Тот же вопрос задавался на security.stackexchange.com , и я получил другой ответ.Пожалуйста, следуйте там, чтобы получить правильный ответ!

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

С тех пор, как я начал переход на MVC 3Я помещал AntiForgeryToken в несколько форм, которые модифицируют защищенные данные и т. Д.

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

  1. Форма входа требует от автора знать правильные учетные данные.Я не могу придумать, каким образом атака CSRF выиграет здесь.Особенно, если я проверяю, что запрос пришел с того же хоста (проверяя заголовок Referrer)
  2. Токен AntiForgeryToken генерирует разные значения при каждой загрузке страницы. Если у меня открыты две вкладки со страницей входа, изатем попробуйте опубликовать их, первый успешно загрузится.Второй сбой с AntiForgeryTokenException (сначала загрузите обе страницы, затем попытайтесь опубликовать их).С более безопасными страницами - это, очевидно, неизбежное зло, со страницами входа в систему - кажется излишним, и просто напрашивается на неприятности: S

Возможно, есть другие причины, по которым можно использовать / не использоватьтокен в их формах. Правильно ли я считаю, что использование токена в каждой форме сообщения - это плохо / излишне, и если да, то какие формы выиграют от него, а какие определенно НЕ принесут пользу?

1 Ответ

11 голосов
/ 21 января 2011

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

  1. Злоумышленник устанавливает на своем сайте HTML-форму, напоминающую ваш сайт.Эта форма также может содержать скрытые поля.
  2. Он обманывает одного из пользователей вашего сайта, чтобы посетить его вредоносный URL.
  3. Пользователь считает, что он находится на вашем сайте, заполняет форму и отправляет еена ваш сайт.
  4. Если пользователь уже прошел проверку подлинности на вашем сайте, отправка формы завершается успешно, и ничего не подозревающий пользователь удалил свою учетную запись (или все, что вы можете себе представить).

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

Примечание: проверка заголовка Referer на предмет выявления того, что запрос поступил с вашего сайта, небезопасна.Любой может подделать запрос и подделать этот заголовок.

...