ASP.NET MVC - мешает ли AntiForgeryToken пользователю изменять опубликованные значения формы? - PullRequest
0 голосов
/ 31 октября 2009

Я понимаю, что функция AntiForgeryToken в ASP.NET MVC предотвращает атаки между сайтами.

Однако, это мешает изменить значения формы перед POST?

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

Каков предпочтительный способ гарантировать, что значения формы между GET и POST не были изменены?

1 Ответ

3 голосов
/ 31 октября 2009

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

  1. Хакер отправляет запрос GET на форму.
  2. Он читает значение файла cookie, сгенерированного AntiForgeryToken
  3. Он отправляет URL-адрес, обрабатывающий действие формы, отправляя файл cookie, скрытое поле RequestVerificationToken, которое имеет то же значение, что и файл cookie, и идентификатор измененного объекта.

Как вы можете видеть, единственное отличие, как будто вы не использовали AntiForgeryToken, заключается в том, что хакеру необходимо отправить дополнительный запрос GET для считывания значения токена.

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

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