2012-10-30 35 views
5

Chúng tôi đã có một kiểm tra bảo mật chống lại trang web của chúng tôi và một lỗ hổng đã được xác định.Chấm dứt định danh phiên trên máy chủ

Issue

Nếu định danh session được biết đến bởi một kẻ tấn công có quyền truy cập vào máy trạm của người dùng, phiên đăng xuất khỏi có thể được truy cập bằng cookie phiên sau khi người dùng đã chấm dứt phiên của họ .

Khuyến nghị

Đảm bảo rằng phiên định danh được chấm dứt một cách chính xác về phía máy chủ khi chức năng logout được gọi.

Mã này hiện đang thực hiện điều này (nếu người dùng nhấp vào nút "logout")

 FormsAuthentication.SignOut(); 
     Roles.DeleteCookie(); 
     Session.Clear(); 

Tôi không chắc chắn làm thế nào để kiểm tra "đảm bảo rằng từ định danh phiên là được chấm dứt chính xác ở phía máy chủ khi chức năng đăng xuất được gọi. "

Tôi đã thực hiện một số nghiên cứu và nghĩ rằng tôi nên làm điều này thay thế?

 Session.Abandon(); 

Nếu không, tôi nên làm gì? (Tôi không hoàn toàn chắc chắn cách kiểm tra điều này ...)

Trả lời

6

Trong ASP.net Session.Abandon() không đủ cho tác vụ này, nó không xóa cookie ID phiên khỏi trình duyệt của người dùng, vì vậy mọi yêu cầu mới cùng một ứng dụng, sau khi phiên bị hủy bỏ, sẽ sử dụng cùng một session ID và một phiên bản State State mới! As Microsoft states here. Bạn cần phải từ bỏ phiên rõ ràng cookie phiên ID:

Session.Abandon(); 
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

Nó cũng là một thực hành tốt để thay đổi tên cookie Form Authentication, trong tập tin web.config của bạn:

<authentication mode="Forms"> 
    <forms name=".CookieName" loginUrl="LoginPage.aspx" /> 
</authentication> 

Dưới đây là một bài viết tốt trên Session Attacks and ASP.NET và cách giải quyết.

Các vấn đề liên quan