Ich habe eine MVC-Anwendung, die [Authorize] verwendet, um die privaten Bits zu schützen. Wenn ich die SignOut() URL auswähle, signiert es mich ab, aber wenn ich die Zurück-Taste in meinem Browser drücke, geht es auf die sichere Seite und erlaubt mir sogar, das Formular zu benutzen. Die Aktion findet statt und zeigt dann, dass ich abgemeldet bin. Das Problem ist, dass es die gesicherte Aktion ausführt (Einfügen einer Zeile in meine Datenbank). Dann kann ich den Zurück-Knopf wieder benutzen und alles machen. Wenn ich nach dem Abmelden die Zurück-Taste benutze und die Browseraktualisierung drücke, wird angezeigt, dass ich ausgeloggt bin und mir den Zugriff auf die sichere Seite verweigere.Verwendung der Zurück-Schaltfläche des Browsers, nachdem SignOut() Zugriff auf sichere Seite ermöglicht (ASP.NET MVC)
Fehle ich etwas Wichtiges? Es scheint, als könnte es ein wirklich großes Sicherheitsproblem sein.
public ActionResult LogOff(string ReturnUrl)
{
FormsAuth.SignOut();
if (!String.IsNullOrEmpty(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
return RedirectToAction("Index", "Page");
}
}
zu helfen Hast du vergessen, [Autorisieren] um die Aktion, die akzeptiert den Post (über [AcceptVerbs (HttpVerbs.Post)]? – Langdon
Nein, aber wenn ich zurück ging einen Blick haben ich es so hatte: \t \t [AcceptVerbs (HttpVerbs.Get)] \t \t [autorisieren (Roles = "Administrator")] und \t \t [AcceptVerbs (HttpVerbs .Post)] \t \t Wenn ich das Authorize-Flag vor den AcceptVerbs sowohl für Get und Post setzen, lassen Sie mich immer noch zurück zum Formular, aber es würde mich nicht zulassen, es zu veröffentlichen . – mark123
Ich möchte es immer noch nicht zeigen, die sichere Form, ob es ermöglicht, zurück oder nicht zu buchen. Das ist ein seltsames Problem. Mit der [Autorisieren] Dekoration sollte ich nicht für IsAuthenticated testen müssen, sollte ich? \t \t \t if (! User.Identity.IsAuthenticated) {return RedirectToAction ("Anmelden", "Konto");} – mark123