Tôi có một trang web đang sử dụng xác thực mẫu và tư cách thành viên. Người dùng phải bật cookie để sử dụng trang web. Tôi đã được yêu cầu thay đổi mã để id phiên được thay đổi ngay sau khi người dùng đăng nhập. Aparently điều này sẽ bảo vệ chống lại một cuộc tấn công phiên Fixation (http://en.wikipedia.org/wiki/Session_fixation). Có ai biết làm thế nào tôi có thể thay đổi id phiên mà không làm mất toàn bộ phiên? PHP có một phương pháp cụ thể để làm điều này nhưng tôi không thể tìm thấy một NET tương đương.cách thay đổi id phiên sau khi đăng nhập trong asp.net
Trả lời
Here's a blog post rằng cuộc đàm phán về vấn đề này:
ASP.NET không trực tiếp hỗ trợ chức năng để tái tạo một phiên ID. Xem tài liệu về số vấn đề here. Có một not-so quick and dirty way để làm điều đó bằng cách đặt giá trị
ASPNET_SessionID
thành chuỗi trống và chuyển hướng để rằng giá trị được tạo lại.
Tôi đã trả lời câu hỏi tương tự tại Generating a new ASP.NET session in the current HTTPContext. Về cơ bản chúng ta phải thay đổi một số trạng thái bên trong SessionStateModule để có thể tạo lại session ID mà không làm mất các đối tượng trong Session. Tôi đã sử dụng sự phản chiếu để thiết lập trường _rqId thành ID mới và _rqSessionStateNotFound thành true. Nhược điểm là chúng ta phải cấp "Full Trust" cho Ứng dụng.
[câu trả lời được chấp nhận] (http://stackoverflow.com/a/1419508/295686) tham chiếu một bài viết được nhắm mục tiêu tại .NET 1.1 (và nó không thực sự giải quyết phiên làm việc, chỉ sử dụng lại phiên cũ), nhưng điều này giải pháp là thanh lịch hơn và làm việc trong ứng dụng .NET 4.5 của chúng tôi (một trang MVC và một trang Web Forms). – mlhDev
Đây là một câu hỏi thực sự cũ Tôi đang hồi sinh, nhưng đây là giải pháp:
var manager = new SessionIDManager();
bool redirected, isAdded;
manager.SaveSessionID(System.Web.HttpContext.Current,
"5vonjb4mtb1of2fxvhjvkh5d", out redirected, out isAdded);
// sessionId now equals "5vonjb4mtb1of2fxvhjvkh5d"
var sessionId = Session.SessionID;
Tôi biết, đã lâu rồi. Nhưng chúng tôi đã thử mã của bạn và nó không hoạt động cho chúng tôi. sessionId không bằng "5vonjb4mtb1of2fxvhjvkh5d". – mosquito87
tôi đã làm điều này với thành công. sessionid đã thay đổi thành sessionid mới. – pinopino
Điều này đã cho chúng tôi gần gũi hơn nhưng không đủ gần - vẫn làm việc trên đó. Điều này sẽ cập nhật ID phiên và gửi cập nhật cookie giống như bạn mong đợi nhưng chúng tôi vẫn muốn sử dụng phiên trong cùng yêu cầu đó. Chúng tôi không thể làm điều đó ngay bây giờ - xuất hiện túi phiên là người trước; yêu cầu tiếp theo thấy túi phiên mới nhưng giá trị của chúng tôi không có ở đó. – mlhDev
- 1. Thay đổi ngôn ngữ khi đăng nhập
- 2. phiên bị mất sau khi đăng nhập thành công?
- 3. Thay đổi tuyến đường mặc định của ASP.NET MVC khi đăng nhập/đăng xuất
- 4. trang sau khi đăng nhập trong playframework
- 5. Phiên Giết ASP.NET theo Id
- 6. Khi nào phiên được tạo trong khi đăng nhập JSF?
- 7. Cách chuyển hướng đến trang đăng nhập sau khi phiên hết hạn trong GWT RPC gọi
- 8. Phiên trống trong ASP.NET/IIS sau khi xây dựng lại
- 9. Redirect Sau khi đăng nhập: Web.config
- 10. nhận ID phiên trong ASP.Net
- 11. ID đăng ký GCM đã thay đổi
- 12. asp.net MVC nhận hiện tại người dùng đăng nhập id
- 13. Cách chuyển hướng đến trang Đăng nhập khi Phiên hết hạn (ASP.NET 3.5 FormsAuthen)
- 14. Thay đổi URL chuyển hướng facebook khi đăng nhập
- 15. Đăng nhập không thành công sau khi nâng cấp lên ASP.net 4.0 từ 3.5
- 16. Không thể đăng nhập vào máy chủ SQL sau khi thay đổi tên máy tính
- 17. Chuyển hướng sau khi đăng nhập?
- 18. Không thể thay đổi đăng nhập
- 19. Trường nhập JS cập nhật góc sau khi thay đổi
- 20. Chuyển hướng ASP.NET MVC sau khi đăng nhập vào trang mà người dùng đến từ
- 21. Cách đăng xuất đúng cách ứng dụng web Java EE 6 sau khi đăng nhập
- 22. Vòng đăng nhập xác thực mẫu Asp.net
- 23. đăng nhập xmpp không thành công sau khi xác thực
- 24. Android - trích xuất cookie sau khi đăng nhập trong webview
- 25. Chuyển hướng bảo mật mùa xuân sau khi đăng nhập
- 26. Lấy CurrentUserID từ Websecurity trực tiếp sau khi đăng nhập (C#/ASP.NET)
- 27. Cho phép nhập khóa để đăng nhập trong asp.net?
- 28. Với chuyển hướng ASP.NET MVC đến trang đăng nhập khi phiên hết hạn
- 29. Thay đổi giá trị mặc định của thời gian chờ của phiên trong asp.net mvc
- 30. Thay đổi trường nhập trước khi gửi
i aslo nghĩ về điều này, nhưng sau khi tái tạo đó, tất cả các đối tượng trong đối tượng session sẽ mất ... – MemoryLeak
Các bài đăng trên blog mà bạn liên kết đến không còn nữa. –