forgery countermeasures anti asp.net security xss antiforgerytoken

asp.net - anti - csrf countermeasures



¿Cómo valida ASP.NET el token anti-falsificación? (3)

La descripción anterior no es todo lo que se hace, en el caso de AjaxRequest, el antiforgery, específicamente en las solicitudes de obtención, generalmente no enviará el Formulario con el valor oculto para la comparación, sino que tendrá que establecer un valor de encabezado con el mismo contenido del cookie a través de javascript ... el nombre del encabezado que debe establecer es por defecto X-XRF-Token header [relacionado con angularjs] ... por supuesto, necesitará deshabilitar CORS o habilitarlo solo para dominios específicos para proteger las API, SAMEORIGIN También es necesario configurar para evitar clickjacking ..

Me pregunto cómo comprueba ASP.NET si un token de anti-falsificación es válido o no. ¿Dónde está ASP.NET almacenando esos tokens? ¿Y cómo se almacenan?



Una explicación gradual más clara que la respuesta aceptada imho (de https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks )

  1. El cliente solicita una página HTML que contiene un formulario.
  2. El servidor incluye dos tokens en la respuesta. Una ficha se envía como una cookie. El otro se coloca en un campo de formulario oculto. Los tokens se generan aleatoriamente para que un adversario no pueda adivinar los valores.
  3. Cuando el cliente envía el formulario, debe enviar ambos tokens de vuelta al servidor. El cliente envía el token de la cookie como una cookie y envía el token de formulario dentro de los datos del formulario. (Un cliente del navegador hace esto automáticamente cuando el usuario envía el formulario).
  4. Si una solicitud no incluye ambos tokens, el servidor rechazará la solicitud.