validateantiforgerytoken site net forgery example cross anti c# ios asp.net-mvc csrf antiforgerytoken

c# - site - AntiForgery.GetTokens: ¿cuál es el propósito del parámetro oldCookieToken?



token anti csrf (1)

AntiForgery.GetTokens intentará reutilizar el token de cookie anterior para fines de validación. Entonces, si ya tiene un token de validación que desea reutilizar, intentará usarlo en lugar de generar uno nuevo. Si el token anterior no es válido, generará uno nuevo y lo usará en su lugar.

Así que pasar null a oldCookieToken es válido. Simplemente le dice a GetTokens que siempre genere un nuevo token de cookie.

Estamos escribiendo una aplicación móvil iOS en object-c que hace publicaciones en nuestra aplicación de servidor MVC ASP.NET. En el iPhone, la pila HTTP (y las cookies, etc.) parecen compartirse con Safari. Esto nos deja abiertos a los ataques XSRF, por lo que, a menos que esté equivocado, debemos proteger los POST con tokens anti-falsificación y proteger nuestros métodos de controlador con ValidateAntiForgeryTokenAttribute .

Calificaré esta pregunta diciendo que no entiendo correctamente el mecanismo por el cual se generan y verifican las fichas de antiforgería ... en particular, el término ''nonce'' usado en este contexto es algo místico.

Debido a que no estamos entregando HTML al cliente, no podemos usar el estándar @Html.AntiForgeryToken() , por lo tanto, tenemos que usar AntiForgery.GetTokens para adquirir y distribuir los tokens a nuestros clientes. Esto tiene un primer parámetro misterioso: oldCookieToken . En este momento, simplemente lo puse en null y todo parece funcionar bien. Entonces, ¿alguien puede decirme ... de qué sirve suministrar el token antiguo al algoritmo de generación de token? Si solo se emite un token para nuestra aplicación de iOS y se reutiliza para varias publicaciones, ¿será esto problemático?