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

Нет. HTTP использует только текст (или двоичные файлы).

Вы должны его преобразовать.

13
задан Nasser Hadjloo 21 February 2010 в 08:18
поделиться

5 ответов

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

10
ответ дан 1 December 2019 в 19:49
поделиться

Я не знаю, как это сделать. Вы можете или не можете считать это улучшением:

inline bool operator< (const uint128_t &a, const uint128_t &b)
{
    register uint64_t temp = a.hi;
    __asm__(
        "cmpq %2, %1;"
        "sbbq $0, %0;"
        : // outputs:
        /*0*/"=r"(temp)
        : // inputs:
        /*1*/"r"(a.lo),
        /*2*/"mr"(b.lo),
        "0"(temp));

    return temp < b.hi;
}

Это производит что-то вроде:

mov    rdx, [r14]
mov    rax, [r14+8]
cmp    rdx, [r15]
sbb    rax, 0
cmp    rax, [r15+8]
jc is_lessthan
-121--4859369-

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

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

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

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

-121--1890803-

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

2
ответ дан 1 December 2019 в 19:49
поделиться

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

4
ответ дан 1 December 2019 в 19:49
поделиться

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

Эта статья на pluralsite объясняет более подробно

1
ответ дан 1 December 2019 в 19:49
поделиться

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

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

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

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

12
ответ дан 1 December 2019 в 19:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: