Protección CSRF en.NET — ViewStateUserKey
La falsificación de solicitudes entre sitios es uno de los ataques más frecuentes en Internet en la actualidad. A los atacantes les resulta fácil explotarlo, ya que no requiere ninguna información de autenticación, sino que utiliza cookies de sesión, sino que solo requiere que el usuario se autentique en la aplicación. Y esto funciona en todas las plataformas. No importa el tipo de autenticación que utilice la aplicación, la autenticación de ventanas o formularios. Supongamos que el atacante aloja una página en algún servidor X que ejecuta funciones críticas de la aplicación; un atacante que conoce la aplicación engaña a la víctima para que visite la página mediante ataques de suplantación de identidad, uso indebido del correo electrónico, errores de redireccionamiento, etc. La acción se ejecuta en segundo plano sin que la víctima lo sepa, utilizando el estado de sesión del usuario que ha iniciado sesión.
.NET 3.5 Framework tiene una funcionalidad integrada para prevenir el ataque CSRF. El marco tiene la propiedad ViewStateUserKey en el ensamblaje system.web que corrige parcialmente el problema. Sin embargo, esto no hace que la aplicación sea completamente segura contra el ataque CSRF si se usa sola. Esto es solo una parte del concepto de defensa en profundidad.
ViewStateUserKey asigna un valor aleatorio a la página de visita actual de un usuario individual. El valor aleatorio se asigna en un parámetro ViewState, que debe estar habilitado en una aplicación. Este valor aleatorio puede ser la cookie de autenticación, el identificador de sesión o cualquier token aleatorio. Un buen enfoque es establecer dos variables en la autenticación, es decir, la primera en viewstate, la segunda en el lado del servidor y, a continuación, eliminar la primera variable de viewstate después de una autenticación exitosa. Ahora, antes de enviar la página de funcionalidad crítica al cliente, defina la primera variable de la solicitud y compárela con la variable del lado del servidor como respuesta. Si coincide, procese la solicitud; de lo contrario, descarte la solicitud. Asegúrese de que la primera variable esté oculta.
Se recomienda utilizar el modo de cifrado viewstate junto con el método viewStateUserKey.
Más soluciones para CSRF:
Suscríbase a nuestro boletín hoy mismo y mejore sus conocimientos con información valiosa. ¡Es rápido, fácil y gratuito!