Я подозреваю, что это связано с моей тестовой конфигурацией, но я хотел бы попросить вас о ваших мыслях. Я играл с быстрым тестовым проектом. У меня была простая страница авторизации форм и страница заказа (два поля и список для отображения «заказов»). Страница заказа была настроена на использование Request.Form [] при получении параметров, чтобы предотвратить ввод данных как операцию GET.
Я установил ViewStateUserKey в Page_Init и явно установил для EnableViewStateMac значение true (даже если по умолчанию это так).
Затем я создал .HTM, который отправил форму на мою страницу заказа, в которой были заданы значения для двух полей (продукт и количество). Должен заметить, что я не стал создавать представление как часть отправки формы. Я сделал Просмотр исходного кода на реальной странице в своем браузере, вырезал все, кроме полей формы, добавил немного JavaScript, чтобы установить значения полей и сделал form.submit ()
Я вошел в тестовый проект и открыл .HTM. .HTM успешно отправил форму, и когда я обновил страницу заказа, я увидел поддельный заказ.
Почему ViewStateUserKey не защищает от этого? Разве это не должно блокировать этот тип атаки? В этом примере я не вмешивался в viewstate, я просто создал страницу с обычной формой публикации, поэтому ViewStateUserKey ONLY существует для защиты от взлома ViewState (который мне кажется совершенно бесполезным, или это работает, потому что обе страницы живут на одном физическом компьютере?