Веб-приложения ASP и ASP.NET используют в формах значение, называемое VIEWSTATE. Насколько я понимаю, это используется для сохранения какого-то состояния на клиенте между запросами к веб-серверу.
Я никогда не работал с ASP или ASP.NET, и мне нужна помощь с двумя вопросами (и некоторыми подвопросами):
1) Можно ли программно подделать/создать VIEWSTATE для формы? Уточнение: может ли программа просмотреть форму и создать из нее содержимое значения VIEWSTATE в кодировке base64?
1 а) Или его всегда можно просто опустить?
1 b) Можно ли повторно использовать старое VIEWSTATE для конкретной формы в более позднем вызове той же формы, или это просто удача, если это сработает?
2) Я понял из http://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic12, что можно включить защиту, чтобы VIEWSTATE стал безопасным от спуфинг.Может ли программа обнаружить, что VIEWSTATE защищен таким образом?
2 a) Существует ли взаимно однозначное соответствие между наличием значений EVENTVALIDATION и защищенными VIEWSTATE?
Относительно 1) и 2), если да, могу ли я подсказать, как это сделать? Для 2) я думаю, что могу декодировать значение с помощью base64 и искать строку, которая всегда находится в незашифрованных VIEWSTATE. "Первый:"? Что-то другое?
Я сделал небольшой инструментдля обнаружения и эксплуатации так называемых уязвимостей CSRF. Я использую его для быстрого подтверждения концепций таких уязвимостей, которые я отправляю владельцам затронутых сайтов. Довольно часто я сталкиваюсь с этими формами с VIEWSTATE, и я не знаю, безопасны они или нет.
Правка 1:Несколько разъяснен вопрос 1.
Правка 2:Добавлен текст курсивом.