validateantiforgerytoken net mvc foreign asp antiforgery anti __requestverificationtoken c# asp.net-mvc-3 antiforgerytoken

c# - net - Token anti falsificación en la página de inicio de sesión



csrf token c# (3)

He escrito una solución completa aquí: https://richardcooke.info/en/2014/keep-users-signed-in-after-asp-net-deploy/

Aquí está el código necesario para llamar en su controlador desde su método GET:

private void SetANewRequestVerificationTokenManuallyInCookieAndOnTheForm() { if (Response == null) return; string cookieToken, formToken; AntiForgery.GetTokens(null, out cookieToken, out formToken); SetCookie("__RequestVerificationToken", cookieToken); ViewBag.FormToken = formToken; } private void SetCookie(string name, string value) { if (Response.Cookies.AllKeys.Contains(name)) Response.Cookies[name].Value = value; else Response.Cookies.Add(new HttpCookie(name, value)); }

y código para poner en su vista en lugar de Html.AntiForgeryToken ():

@if (ViewBag.FormToken != null) { <text><input name="__RequestVerificationToken" type="hidden" value="@ViewBag.FormToken" /></text> } else { <text>@Html.AntiForgeryToken()</text> }

He implementado token antiforgery en mi página de inicio de sesión.

Ahora tenía un usuario presionando la tecla Atrás en el teclado, y cuando vuelven a hacer clic en el botón de inicio de sesión después de completar sus credenciales, obtienen una página de error.

¿Hay alguna forma mejor de manejar este caso como redirigirlos a una nueva página de inicio de sesión?

La página que es la página de inicio de sesión es: / cuenta / inicio de sesión

Si los detalles de inicio de sesión son exitosos, el usuario se redirige a: Página de inicio / índice en la que el usuario presionó el botón de nuevo.


Mi solución a esto fue:

Vuelve a cargar una página si vuelve a entrar en la página de inicio de sesión. Esto asegurará la carga fresca de token antiforgery

y todo está hecho


No implemente ASP.NET AntiForgeryToken en su página de inicio de sesión. El token se basa en un nombre de usuario entre otros criterios y en una página de inicio de sesión, asumiendo que el atacante ya tiene credenciales en un sistema para poder explotar csrf en esa página.

Sin embargo, debe usar algún tipo de protección CSRF en su página de inicio de sesión; consulte https://security.stackexchange.com/a/2126/51772