No meu post anterior falei como proteger o ViewState usando o ViewStateUserKey. Sendo uma excelente solução, na minha opinião existe uma melhor usando a framework 2.0 :P
Nós podemos remover o ViewState da página e guarda-lo no Session state ou mesmo num ficheiro externo (em termos de performance não sei se será a melhor opção).
Isto dá-nos alguns benefícios adicionais, tais como reduzir o tamanho das páginas e a possibilidade de colocar "timeout" no ViewState minimizando possíveis ataques.
O ASP.NET 2.0 introduz o conceito de "Page State Persister" que é uma classe responsável pela persistência do ViewState. Por defeito as páginas utilizam a persistência chamada HiddenFieldPageStatePersister que utiliza o campo "hidden" chamado __VIEWSTATE (ViewState).
Caso desconheçam existe "out-of-the-box" a persistência chamada SessionPageStatePersister que tal como o nome indica, guarda o ViewState na session !! Yeap, is true :)
Para tal basta dar instruções á página para utilizar este tipo de persistência fazendo um override ao PageStatePersister na classe da página!!
1: protected override PageStatePersister PageStatePersister
2: { 3: get
4: { 5: return new SessionPageStatePersister(this);
6: }
7: }
Poderão fazer isto directamente na página ou então criar uma classe base "Page".
Digam lá que não é uma excelente solução de segurança :)