Jeton anti-contrefaçon sur la page de connexion
j'ai implémenté un token antiforgery sur ma page de connexion.
maintenant j'ai eu un utilisateur appuyant sur la touche de retour sur le clavier, et quand ils cliquent à nouveau sur le bouton de connexion après avoir rempli leurs justificatifs d'identité, ils obtiennent la page d'erreur.
y a-t-il un meilleur moyen de gérer cette affaire comme de les rediriger vers frais page de connexion?
la Page qui est la page de login est : /compte/ouverture de session
si les informations de connexion sont complètes, l'utilisateur est redirigé vers :accueil / Page Index sur lequel l'utilisateur a appuyé sur le bouton retour.
3 réponses
ne pas mettre en œuvre la ASP.NET AntiForgeryToken sur votre page de connexion. Le jeton est basé sur un nom d'utilisateur parmi d'autres critères, et une page de connexion assumer l'attaquant a déjà des informations d'identification d'un système afin d'être en mesure d'exploiter csrf sur cette page.
cependant, vous devez utiliser une forme de protection CSRF sur votre page de connexion-voir https://security.stackexchange.com/a/2126/51772
j'ai écrit une solution complète ici: http://richardcooke.info/keep-users-signed-in-after-asp-net-deploy /
voici le code nécessaire pour appeler dans votre controller votre méthode 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));
}
et code à mettre dans votre vue à la place de Html.AntiForgeryToken():
@if (ViewBag.FormToken != null)
{
<text><input name="__RequestVerificationToken" type="hidden" value="@ViewBag.FormToken" /></text>
}
else
{
<text>@Html.AntiForgeryToken()</text>
}
ma solution fut:
rechargez une page si elle se connecte à nouveau. cela permettra d'assurer un nouveau chargement de jeton antiforgery
et tout est fait