Тренировочный комплект MCTS 70-515, неправильный в состоянии просмотра? - PullRequest
2 голосов
/ 01 октября 2011

На странице 123 книги - глава 3, урок 2. там написано: " Свойство Page.ViewState предоставляет объект словаря для сохранения значений между несколько запросов на одну и ту же страницу. Этот объект имеет тип StateBag. Когда ASP.NET страница обрабатывается, текущее состояние страницы и ее элементы управления хэшируются в строку и сохраняется на странице как скрытое HTML-поле с именем __ViewState. Если данные слишком длинные для одно поле (как указано в свойстве Page.MaxPageStateFieldLength), ASP.NET выполняет просмотреть состояние блока, чтобы разделить его на несколько скрытых полей. "

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

Книга неправильна? или я что-то здесь упускаю ...

Ответы [ 2 ]

1 голос
/ 30 января 2012

Я тоже готовлюсь к этому экзамену по той же книге. Эта конкретная строка похожа на информацию в следующей статье

http://msdn.microsoft.com/en-us/library/ie/75x4ha6s.aspx

Когда страница обрабатывается, текущее состояние страницы и элементы управления хэшируется в строку и сохраняется на странице как скрытое поле, или несколько скрытых полей, если объем данных, хранящихся в ViewState свойство превышает указанное значение в MaxPageStateFieldLength имущество. Когда страница отправляется обратно на сервер, она анализируется строка состояния представления при инициализации страницы и восстанавливает свойство информация на странице.

Однако, если вы покопаетесь в другом месте на MSDN, вы получите следующее точное объяснение.

http://msdn.microsoft.com/en-us/library/ie/bb386448.aspx

По умолчанию данные о состоянии просмотра хранятся на странице в скрытом поле. и кодируется с использованием кодировки base64. Кроме того, хэш представления данные о состоянии создаются из данных с использованием аутентификации компьютера код (MAC) ключ. Значение хеша добавляется к закодированным данным состояния просмотра и результирующая строка сохраняется на странице. Когда страница отправленный обратно на сервер, каркас страницы ASP.NET пересчитывает хэш-значение и сравнивает его со значением, хранящимся в состоянии просмотра. Если хеш-значения не совпадают, возникает исключение, которое указывает, что данные о состоянии просмотра могут быть недействительными.

Создав значение хеша, каркас страницы ASP.NET может проверить, данные состояния просмотра были повреждены или изменены. Однако даже если он не изменен, данные о состоянии просмотра могут быть перехвачены и читается злоумышленниками.

Итак, отвечу на ваши вопросы.

  • Хеширование выполнено, но только для целей действительности. Этот абзац, безусловно, вводит в заблуждение.
  • Относительно __ViewState, Dooh предоставил ссылку выше
1 голос
/ 01 октября 2011

Viewstate кодируется с base-64.

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

Ваше понимание также неверно, viewstate не хранит значения, отличные от значений времени разработки. В основном это постоянные данные формы между постбеками. Пожалуйста, обратитесь к MSDN (http://msdn.microsoft.com/en-us/library/bb386448.aspx) для получения подробной информации.

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