Tôi có một ứng dụng MVC sử dụng [Ủy quyền] để bảo vệ các bit riêng tư. Khi tôi chọn SignOut() URL nó ký cho tôi nhưng nếu tôi nhấn nút quay lại trên trình duyệt của tôi thì nó sẽ chuyển đến trang bảo mật và thậm chí cho phép tôi sử dụng biểu mẫu. Hành động diễn ra và sau đó nó cho thấy rằng tôi đã đăng xuất. Vấn đề là nó thực hiện hành động bảo mật (chèn một hàng vào cơ sở dữ liệu của tôi). Sau đó, tôi có thể sử dụng nút quay lại và thực hiện tất cả. Nếu tôi sử dụng nút quay lại sau khi đăng xuất và nhấn làm mới trình duyệt, nó sẽ hiển thị tôi đã đăng xuất và từ chối truy cập vào trang bảo mật.Sử dụng nút quay lại của trình duyệt sau khi SignOut() cho phép truy cập vào trang bảo mật (ASP.NET MVC)
Tôi có thiếu cái gì quan trọng không? Dường như nó có thể là một vấn đề an ninh thực sự lớn.
public ActionResult LogOff(string ReturnUrl)
{
FormsAuth.SignOut();
if (!String.IsNullOrEmpty(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
return RedirectToAction("Index", "Page");
}
}
Bạn quên quên [Ủy quyền] xung quanh hành động chấp nhận bài đăng (ở trên [AcceptVerbs (HttpVerbs.Post)]? – Langdon
Không nhưng khi tôi quay trở lại để có một cái nhìn tôi đã có nó như thế này: \t \t [AcceptVerbs (HttpVerbs.Get)] \t \t [Authorize (Roles = "Administrator")] và \t \t [AcceptVerbs (HttpVerbs .Post)] \t \t [Ủy quyền (Vai trò = "Quản trị viên")] Khi tôi đặt cờ Ủy quyền trước AcceptVerbs cho cả Nhận và Đăng nó vẫn cho phép tôi quay lại biểu mẫu nhưng nó sẽ không cho phép tôi đăng . – mark123
Tôi vẫn muốn nó không hiển thị biểu mẫu an toàn cho dù nó cho phép nó đăng lại hay không. Đây là một vấn đề kỳ lạ. Sử dụng trang trí [Ủy quyền] Tôi không cần phải thử nghiệm cho IsAuthenticated, phải không? \t \t \t nếu (! User.Identity.IsAuthenticated) {return RedirectToAction ("LogOn", "Account");} – mark123