Ho un'app MVC che utilizza [Autorizza] per proteggere i bit privati. Quando seleziono l'URL SignOut() mi disconnette, ma se premo il pulsante Indietro sul mio browser, questo va alla pagina sicura e mi consente persino di usare il modulo. L'azione si svolge e poi mostra che sono uscito. Il problema è che esegue l'azione protetta (inserendo una riga nel mio database). Quindi posso usare di nuovo il pulsante Indietro e farlo dappertutto. Se utilizzo il pulsante Indietro dopo aver effettuato il logout e premuto il browser, viene visualizzato che sono disconnesso e mi rifiuta l'accesso alla pagina protetta.Utilizzo del pulsante Indietro del browser dopo SignOut() consente l'accesso alla pagina protetta (ASP.NET MVC)
Mi manca qualcosa di importante? Sembra che potrebbe essere un grosso problema di sicurezza.
public ActionResult LogOff(string ReturnUrl)
{
FormsAuth.SignOut();
if (!String.IsNullOrEmpty(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
return RedirectToAction("Index", "Page");
}
}
Hai dimenticato di avvolgere [Autorizza] intorno all'azione che accetta il post (sopra [AcceptVerbs (HttpVerbs.Post)]? – Langdon
No, ma quando sono tornato ad avere uno sguardo che aveva in questo modo: \t \t [AcceptVerbs (HttpVerbs.Get)] \t \t [Autorizza (ruoli = "Administrator")] e \t \t [AcceptVerbs (HttpVerbs .Post)] \t \t [Autorizza (ruoli = "Administrator")] Quando ho messo la bandiera Autorizza prima che i AcceptVerbs sia per GET e POST ancora lasciatemi tornare alla forma, ma non mi permetteva di post-it . – mark123
Mi piacerebbe ancora che non mostrasse il modulo sicuro se permette di postare o meno. Questo è un problema strano Utilizzo della decorazione [Autorizza] Non dovrei provare per IsAuthenticated, dovrei? \t \t \t if (! User.Identity.IsAuthenticated) {return RedirectToAction ("LogOn", "Account");} – mark123