架构师_程序员_码农网

N Recuperar contraseña
Registrarse

QQ登录

Sólo un paso para empezar

Buscar en
Vistas:25604|Respuestas: 1
打印 上一主题 下一主题

[ Información]ValidateAntiForgeryToken y AutoValidateAntiforgeryToken

[ Copiar enlace]
A 跳转到指定楼层
propietario
发表于 2021-2-20 19:57:29|只看该作者回帖奖励|Navegar hacia atrás |Modo de lectura
En la prevención de ataques CSRF, asp.net mvc proporciona ValidateAntiForgeryToken características contra ataques de falsificación, en la nueva versión del asp.net core framework Microsoft proporciona AutoValidateAntiforgeryToken características, específicas ValidateAntiForgeryToken y AutoValidateAntiforgeryToken cuál es la diferencia, este artículo hará una explicación detallada.

mvc ajax con AntiForgeryToken para prevenir ataques CSRF
h ttps:// www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF Attack Ajax Request Encapsulation
h ttps:// www.itsvse.com/thread-8077-1-1.html
Conceptos de CSRF

CSRF Cross-Site Request Forgery (Cross-Site Request Forgery), con ataques XSS, hay un gran peligro, se puede entender de esta manera: el atacante robó su identidad, en su nombre para enviar una solicitud maliciosa al servidor esta solicitud es completamente legítimo, pero completó el atacante espera que el Una operación, como en su nombre para enviar correo, enviar mensajes, robar su cuenta, añadir el administrador del sistema, e incluso comprar bienes, las transferencias de moneda virtual y así sucesivamente. Lo siguiente: Web A es el sitio web con la vulnerabilidad CSRF, Web B es el sitio web malicioso construido por el atacante, y el usuario C es el usuario legítimo del sitio web Web A.


ASP.NET MVC contra ataques CSRF

En la página de vista, utilice @Html.AntiForgeryToken() para añadir un token, cuando el usuario visite la página, el back-end generará automáticamente un código html oculto a partir del token, como sigue:


<input name="__RequestVerificationToken" type="hidden" value="" CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_ KUUDbK-LS4HD16pJusFRppj-dEGc" />
El controlador del backend debe establecer la función [ValidateAntiForgeryToken ] para evitar el envío de formularios falsificados.

Diferencia entre ValidateAntiForgeryToken y AutoValidateAntiforgeryToken

AutoValidateAntiforgeryTokenAuthorizationFilter hereda de ValidateAntiforgeryTokenAuthorizationFilter y sólo anula el método ShouldValidate.

AutoValidateAntiforgeryToken Atributo que provoca la validación del token antifalsificación para todos los métodos HTTP inseguros. Los tokens antifalsificación son necesarios para todos los métodos HTTP excepto GET, HEAD, OPTIONS y TRACE. Puede aplicarse como filtro global para activar la validación del token antifalsificación de la aplicación por defecto.

h ttps:// github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Mvc/Mvc.ViewFeatures/src/Filters/ AutoValidateAntiforgeryTokenAuthorisationFilter.cs

AutoValidateAntiforgeryTokenAttribute valida la llamada a AutoValidateAntiforgeryTokenAuthorizationFilter. AutoValidateAntiforgeryTokenAuthorizationFilter hereda de ValidateAntiforgeryTokenAuthorizationFilter y anula el método ShouldValidate. true significa que debe ser validado, return false no será validado, como se muestra en la siguiente figura:

Analiza el código fuente:



AutoValidateAntiforgeryTokenAttribute permite aplicar la validación de token antifalsificación de forma global a todos los métodos inseguros como POST, PUT, PATCH y DELETE.Por lo tanto, no es necesario añadir el atributo [ValidateAntiForgeryToken] a cada acción que lo requiera. a todas las acciones que lo necesiten.

Para utilizarlo, añada el siguiente código al método de la clase Startup de su ConfigureServices:


Si necesitas ignorar la autenticación anti-falsificación, puedes añadir el atributo [IgnoreAntiforgeryToken ] a la acción.

A veces puedes encontrarte con la necesidad de tokenizar múltiples peticiones en un controlador, mientras que al mismo tiempo necesitas que algunas peticiones no sean falsificadas, como varias operaciones basadas en GET. Hay varias herramientas que puedes utilizar para hacer el proceso más fácil y cómodo. La primera es la propiedad AutoValidateAntiforgeryToken. Se comporta de forma similar al atributo ValidateAntiForgeryToken. Sin embargo, ignora automáticamente las acciones invocadas por los métodos diseñados para la recuperación de datos: GET, HEAD, OPTIONS y TRACE.Esto le permite añadir rápida y fácilmente métodos anti-falsificación a todos los métodos que pueden cambiar datos sin afectar a los métodos que recuperan los datos.

El siguiente código es un ejemplo de la propiedad AutoValidateAntiforgeryToken:


En este ejemplo, tanto las operaciones de Indexación normales (GET) funcionarán, independientemente de la fuente, mientras que las operaciones de Indexación con métodos POST y las operaciones RemoveUser como métodos Delete requerirán que el cliente utilice un token anti-falsificación.

Personalización de la información relevante

Puede que haya mucha gente que piense que el nombre del campo oculto generado puede cambiarse por el suyo, y el nombre de la cookie puede cambiarse por el suyo ~~.

La respuesta es sí, he aquí una sencilla demostración:

En el método ConfigureServices de Startup, añadir el siguiente contenido para cambiar el nombre por defecto en consecuencia.


Nota: La mayor diferencia entre asp.net core y asp.net es que core soporta pasar parámetros de validación a través de la cabecera de la petición, ¡no del formulario!

private const string AntiforgeryTokenFieldName = "__RequestVerificationToken";
private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";


Puede ver el código fuente: https: //github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Antiforgery/src/Internal/ DefaultAntiforgery.cs

Código de prueba:





Resultado: Al intentar acceder al método test1 devuelve un error 400, y al acceder al método test2 devuelve el parámetro str que pasamos, por lo que se puede ver que la función AutoValidateAntiforgeryToken no intercepta las peticiones GET.

(fin)




Anterior: Fiddler reemplazar enlaces, solicitud de redirección de reenvío
Next :[Informe]SQL Server recuento de SQL en la adición de condiciones
La red de agricultores de código, sólo se publica en el proceso de la práctica, se encontró con dificultades técnicas, no engañar a los demás.
No estoy seguro de si este es el caso, pero creo que sí.

asp.net mvc formulario de solicitud asíncrona

No estoy seguro de si voy a ser capaz de hacer eso.
owner|Posted on 2023-7-8 22:07:08|Only see this author
ASP.NET MVC Request XSS Validación de contenido peligrosa (ValidateInput)
h ttps:// www.itsvse.com/thread-10624-1-1.html
La red de agricultores de código, sólo se publica en el proceso de la práctica, se encontró con dificultades técnicas, no engañar a los demás.
Tienes que iniciar sesión antes de poder volver a publicar Iniciar sesión | Registrarse

E sta versión de las normas integrales


DESCARGO DE RESPONSABILIDAD: Todo el software, materiales de programación o artículos publicados por Code Farmer se utilizan únicamente con fines de aprendizaje e investigación; los contenidos anteriores no deben ser utilizados con fines comerciales o ilegales, o de lo contrario, todas las consecuencias correrán a cargo de los propios usuarios. Esta información del sitio de la red, disputa de derechos de autor no tiene nada que ver con este sitio. Debe eliminar completamente el contenido anterior de su ordenador en las 24 horas siguientes a la descarga. Si le gusta el programa, por favor apoye el software genuino, compre el registro y obtenga un mejor servicio genuino. Si se produce alguna infracción, póngase en contacto con nosotros por correo electrónico para solucionarlo.

Correo To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 00:45

Respuesta rápidaVolver arribaVolver a la lista