¿Es necesario incluir el SessionID incluso si está utilizando ViewState cifrado? ¿Cómo podría un usuario malintencionado generar un ViewState cifrado válido?
Un usuario malintencionado podría generar un ViewState válido y encriptado visitando la página en cuestión y extrayendo el valor. Si el ID de sesión no forma parte del valor de ViewState, este valor será válido para todas las sesiones.
Esto también se menciona en la página de Microsoft Estado de la vista de seguridad : -
Codificación de estado de vista por usuario
Si su sitio web autentica a los usuarios, puede configurar ViewStateUserKey
en el controlador de eventos Page_Init
para asociar el estado de vista de la página con un usuario específico. Esto ayuda a evitar ataques con un solo clic, en los que un usuario malintencionado crea una página web precargada válida con un estado de vista desde una página creada anteriormente. El atacante atrae a la víctima para que haga clic en un enlace que envía la página al servidor utilizando la identidad de la víctima.
Cuando se establece la propiedad ViewStateUserKey
, la identidad del atacante se usa para crear el hash del estado de vista de la página original. Cuando la víctima es atraída para reenviar la página, los valores de hash serán diferentes porque las claves de usuario son diferentes. La página fallará la verificación y se lanzará una excepción.
Debe la propiedad ViewStateUserKey
a un valor único para cada usuario, como el nombre de usuario o el identificador.