Подтвердить что ты не робот

Что такое ViewState? Как это кодируется? Зашифровано? Кто использует ViewState?

Что такое ViewState? Как это кодируется? Зашифровано? Кто использует ViewState?

4b9b3361

Ответ 1

Если вы действительно хотите понять ViewState (а не только то, для чего оно используется), тогда вы можете прочитать эту сказочную статью (которая Я, к сожалению, не автор:-). Остерегайтесь, однако, немного устарели, но все же очень хорошо читаем.

Ответ 2

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

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

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

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

Ответ 3

Это скрытое поле, созданное ASP.NET, которое содержит информацию обо всех элементах управления на странице. В идеальном случае состояние представления не нужно зашифровывать, поскольку оно никогда не должно содержать конфиденциальной информации. Чтобы указать, что состояние представления должно быть зашифровано, установите атрибут проверки элемента <machineKey> в файле machine.config на 3DES. Там хорошая статья в MSDN, описывающая ViewState.

Ответ 4

ViewState не шифруется по умолчанию, используя кодировку base64. Вы можете использовать viewstate, если ваша страница имеет действие с элементами управления.

Ответ 5

Позвольте мне поделиться с вами тем, что я узнал сегодня.

Что такое ViewState?

Состояние представления Microsoft® ASP.NET, в двух словах, является методом, используемым веб-страницу ASP.NET для сохранения изменений в состоянии веб-формы через обратную передачу.

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

Если у меня есть что-то вроде этого:

protected void Page_Load(object sender, EventArgs e)
{
    ViewState["UserName"] = "Shubh Dasgupta";
    ViewState["Password"] = "IAmAPassword";
}

Состояние представления страницы по умолчанию помещается в поле скрытой формы с именем __VIEWSTATE.

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
     value="/wEPDwULLTE2MTY2ODcyMjkPFgQeCFVzZXJOYW1lBQ5TaHViaCBEYXNndXB0YR4IUGFzc3dvcmQFDElBbUFQYXNzd29yZGRk2/xP37hKKE9jfGYYzFjLuwpi6rHlPdXhfSspF6YRZiI=" />

Подробнее

Как это кодируется? Зашифровано?

ViewState по умолчанию кодируется, а не зашифровывается. Давайте возьмем предыдущее значение типа ввода, запустите следующий код:

protected void btnDecode_Click(object sender, EventArgs e)
{
    //txtViewState.Text = "/wEPDwULLTE2MTY2ODcyMjkPFgQeCFVzZXJOYW1lBQ5TaHViaCBEYXNndXB0YR4IUGFzc3dvcmQFDElBbUFQYXNzd29yZGRk2/xP37hKKE9jfGYYzFjLuwpi6rHlPdXhfSspF6YRZiI="
    string str = System.Text.Encoding.ASCII.GetString(Convert.FromBase64String(txtViewState.Text));
    lblDecodedString.Text = str;
}

Вывод для вышеуказанного кода будет ?-1616687229UserNameShubh DasguptaPasswordIAmAPassworddd??O??J(Oc|f?X?? b???=??}+)?f"

Если вы подробно прочитали статью, о которой я упомянул ранее, вы бы придумали "Cost Of ViewState", где она четко и красиво написана:

Во всех посещениях страницы во время этапа состояния сохранения состояния класса Page собирает общее состояние просмотра для всех элементов управления в своем иерархии управления и сериализует состояние в кодировке base-64 строка. (Это строка, которая испускается в скрытом __VIEWSTATE форма.) Аналогичным образом, на обратной стороне требуется этап состояния просмотра нагрузки для десериализации сохраненных данных состояния представления и обновления соответствующих управления в иерархии управления.

Попробуйте сами. Загрузить образец

Ответ 6

ViewState - это один из методов, который использует asp.net для включения модели обратной передачи. Состояние для всех элементов управления, отмеченных runat="server", сохраняется в этой строке base64.

Эта статья множественного числа объясняет более подробно

Ответ 7

Состояние просмотра

Состояние просмотра - это скрытый элемент, который содержит данные всех элементов управления, присутствующих на странице, в зашифрованном виде.

  • Состояние просмотра загружается после Page_Init.
  • Состояние представления создается после Page_PreRender.
  • Просмотр информации о состоянии зашифровывается с помощью Алогорифма Base64.

Прочитайте вопросы о часто задаваемых вопросах, связанных с просмотром, здесь.