Utilizando ViewStateUserKey para aumentar a proteção das páginas - Búfalo Informática
Dica No : 717
Titulo: Utilizando ViewStateUserKey para aumentar a proteção das páginas
Em ataques a sites é muito comum um hacker disparar uma requisição POST para um formulário no site que ele sabe que espera determinados conjuntos de informações. Disparando esta requisição com dados inválidos e inesperados frequentemente o hacker consegue causar um grande estrago.
Para disfarçar seu endereço IP muitas vezes o hacker não dispara o envio diretamente da sua máquina, mas envia o formulário por e-mail para muitos desavisados que, ao clicarem descuidadamente nos links, causarão o disparo dos dados inválidos para o site vítima.
Para fazer isso em ASP.NET o hacker necessita de um valor de viewstate válido, do contrário o servidor recusa a informação. Mas isso é fácil de conseguir : Basta navegar no site e copiar o campo viewstate.
Para evitar este tipo de ataque o ASP.NET possui um recurso nativo muito bom : Uma propriedade da página chamada viewstateUserKey.
O valor que atribuirmos ao viewStateUserKey será utilizado para gerar o hash do viewstate. Desta forma, se atribuirmos o sessionid a esta propriedade o viewState de cada sessão será diferenciado, assim sendo o hacker não poderá copiar o viewState de uma sessão para outra pois o valor estará inválido.
Claro que não adianta nada atribuir um valor fixo a esta propriedade, é o mesmo que nada. O ideal é realmente atribuir o sessionID a esta propriedade. Veja como fica :
Você pode colocar isso no page_init de todas as páginas ou criar uma classe base que faça isso e fazer com que as páginas herdem dela.