Si habilita ViewStateUserKey, entonces el servidor protegerá la integridad del estado de la vista agregando una suma de comprobación aleatoria e indiscutible. Esta suma de control actúa como un token CSRF aleatorio.
En particular, ViewStateUserKey calculará un Código de autenticación de mensaje (MAC) en los campos de estado de la vista. Un MAC es como una suma de comprobación codificada de los datos, donde la clave solo la conoce el servidor. Debido a que el atacante no conoce la clave, no puede generar una suma de comprobación válida (resumen de MAC) para algún otro valor de parámetros de estado de vista.
Si usa un ViewStateUserKey, entonces la clave utilizada es específica para el usuario en particular. Esto significa que un atacante malintencionado Mandy no puede aprender un valor válido del resumen MAC para el usuario Bob. Mandy no puede adivinarlo, porque un algoritmo de MAC está diseñado para evitar adivinar el resumen de MAC. Mandy no puede aprenderlo contactando con el servidor, porque si se conecta al servidor, el servidor usará su clave criptográfica, no la clave de Bob, por lo que el resumen de MAC que se envía a Mandy no estará relacionado con el que se usó para Bob.
En efecto, el resumen de MAC actúa como una cadena aleatoria de 128 bits que el atacante no puede adivinar. Esto es lo que previene CSRF. Las defensas CSRF estándar incluyen la inclusión de una cadena aleatoria en los parámetros de la solicitud (aleatoria, de modo que el atacante no pueda predecirla). Con un ViewStateUserKey, el resumen de MAC actúa como una cadena aleatoria.
Vea también Microsoft en el estado de seguridad de la vista
y ¿ASP.NET Viewstate previene implícitamente los ataques CSRF? ¿Qué significa esto para MVC? .