¿Qué es CSRF?
CSRF (falsificación de peticiones entre sitios), también conocido como ataque de un clic/sesión riding, abreviatura china: CSRF/XSRF. CSRF (Cross Site Request Forgery) es un método de ataque a red que fue incluido entre los 20 principales riesgos de seguridad en Internet en 2007. Otros riesgos de seguridad, como la inyección de scripts SQL y los ataques a scripts de dominio entre sitios, se han hecho muy conocidos en los últimos años, y muchos sitios web se han protegido de ellos. Sin embargo, CSRF sigue siendo un concepto ajeno para la mayoría de la gente. Incluso el Gmail más famoso tuvo una vulnerabilidad CSRF a finales de 2007, que fue hackeada y causó enormes pérdidas a los usuarios de Gmail.
¿Qué puede hacer la CSRF?
Puedes entender ataques CSRF como este: un atacante ha robado tu identidad y enviado solicitudes maliciosas en tu nombre. CSRF puede hacer cosas como enviar correos electrónicos, enviar mensajes, robar tu cuenta o incluso comprar bienes y transferir moneda virtual en tu nombre...... Los problemas causados incluyen: filtraciones de privacidad personal y seguridad de la propiedad.
ASP.NET Marca antifalsificación MVC AntiForgeryToken
En ASP.NET MVC, los tokens de formulario y los tokens de cookie se generan automáticamente por defecto siempre que se use @Html.AntiForgeryToken() en la página de visualización. Sin embargo, si queremos lograr la recuperación manual en segundo plano, necesitamos usar la clase System.Web.Helpers.AntiForgery, y amigos interesados en ver el código fuente descubrirán que, de hecho, el método de llamada interna de @Html.AntiForgeryToken() es el mismo que el de la clase AntiFalsificación.
Se utiliza principalmente para obtener el formulario correspondiente y el token de cookie mediante dos métodos estáticos: AntiForgery.GetHtml() o AntiForgery.GetTokens (cadena viejaCookieToken, cadena out newCookieToken, cadena out formToken). Sin embargo, debe señalarse que una vez llamado al método GetHtml, el token de cookie correspondiente se generará automáticamente, y luego se devolverá directamente un fragmento de código HTML con el campo oculto del valor del token de formulario, y el valor devuelto estará en este formulario:
<nombre de entrada="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> El nombre del campo oculto suele fijarse a "__RequestVerificationToken", y el valor es un token de seguridad cifrado. Este campo oculto suele colocarse en el formulario a enviar, y la entrega final se verifica contra el token de la cookie.
Si usas el método GetTokens, puedes obtener el formulario cifrado y el token de cookie tras introducir los parámetros correspondientes, pero aquí necesitas almacenar los valores correspondientes tú mismo.
A continuación, introduciremos el método de actualizar manualmente AntiForgeryToken, principalmente a través de AJAX.
Código de paquete:
Código de prueba:
Descubrimos que al enviar una solicitud ajax, __RequestVerificationToken parámetros se incluyen automáticamente, como se muestra en la figura siguiente:
|