Chúng ta không thể lưu trữ trong phiên nếu người dùng đăng nhập hay không và loại bỏ .ASPXAUTH?ASP.NET_SessionId vs .ASPXAUTH tại sao chúng ta cần cả hai?
Trả lời
Trạng thái phiên và xác thực không có liên quan gì đến nhau. Bạn có thể sử dụng cái này mà không có cái khác.
.NET phát hành một cookie hoàn toàn khác, có tên là ASP.NET_SessionId, để theo dõi trạng thái phiên.
Cookie ASPXAUTH được sử dụng để xác định xem người dùng có được xác thực hay không.
Vì vậy, đây là 2 khái niệm khác nhau, tức là Quản lý trạng thái phiên và Quản lý xác thực bằng Xác thực mẫu.
Nếu bạn sử dụng Session để Xác thực và quên Mẫu xác thực, bạn sẽ thoát khỏi .ASPXAUTH
ASP.Net_SessionId
là một cookie được sử dụng để xác định người dùng session trên máy chủ. Phiên là một khu vực trên máy chủ có thể được sử dụng để lưu trữ dữ liệu giữa các yêu cầu http.
Ví dụ, các hành động điều khiển có thể thực hiện:
Session["FirstName"] = model.FirstName;
Sau đó, trong một hành động tiếp theo tên đầu tiên có thể được lấy từ phiên:
var firstName = Session["FirstName"];
Các ASP.Net_SessionId xác định phiên cho người dùng đó yêu cầu. Một người dùng khác sẽ gửi một cookie khác và do đó Session["FirstName"]
sẽ giữ một giá trị khác cho người dùng khác.
ASPXAUTH
là một cookie để xác định nếu người dùng là authenticated (có nghĩa là, đã chứng minh nhân dân được xác minh). Ví dụ, một hành động điều khiển có thể xác định nếu người dùng đã cung cấp thông tin đăng nhập đúng và nếu như vậy đưa ra một cookie xác thực using:
FormsAuthentication.SetAuthCookie(username, false);
Sau đó, sau đó bạn có thể kiểm tra nếu người dùng được ủy quyền để thực hiện một hành động bằng cách sử dụng các [Authorize] thuộc tính kiểm tra sự hiện diện của cookie ASPXAUTH
.
Tóm lại, các cookie có sẵn cho 2 mục đích khác nhau. Một để xác định trạng thái phiên người dùng và một để xác định xem người dùng có được xác thực hay không.
Để hoàn thành câu trả lời cho câu hỏi của bạn, bạn có thể loại bỏ cookie ASPXAUTH
và chỉ sử dụng phiên để xác định người dùng (tôi đã thấy điều này được thực hiện trong các ứng dụng asp cổ điển cũ) nhưng tôi không khuyên bạn nên dùng nó. Tốt hơn hết là nên tách riêng các mối quan tâm và sử dụng phương pháp thích hợp khi cần thiết. Phiên và xác thực sẽ có giá trị thời gian chờ của riêng họ được đặt. Bằng cách sử dụng phiên để xác thực, bạn sẽ chỉ có thời gian chờ. Tôi không chắc chắn mặc dù nếu có bất kỳ tác động an ninh trong chỉ sử dụng phiên để xác thực, nhưng tôi vẫn sẽ giữ chúng riêng biệt.
Cả hai đều bắt buộc, sử dụng hoặc dẫn đến lỗ hổng sau:
* ASP.NET_SessionId Alone: Session Fixation
* Forms Authentication Cookie Alone: Không thể Chấm dứt Xác thực token trên máy chủ
Ngoài ra, bạn cần phải đảm bảo họ cùng nhau properly.Otherwise, cấu hình cũng gây ra rủi ro:
* Loosely Coupled ASP.NET_SessionID và Forms Authentication Cookies: Vẫn còn dễ bị tổn thương
ref: http://blog.securityps.com/2013/06/session-fixation-forms-authentication.html
- 1. flexbox vs bảng, tại sao chúng ta cần flexbox?
- 2. Tại sao chúng ta cần strdup()?
- 3. Tại sao chúng ta cần sợi
- 4. Tại sao chúng ta cần ng-click?
- 5. Tại sao chúng ta cần Control.Lens.Reified?
- 6. mongodb tại sao chúng ta cần getSisterDB
- 7. Tại sao chúng ta cần mệnh đề GLOB trong SQLite?
- 8. MIPS: Tại sao chúng ta cần tải byte khi chúng ta đã có từ tải?
- 9. readelf vs. objdump: tại sao cả hai cần
- 10. lý do tại sao chúng ta cần Hadoop cho hypertable
- 11. Tại sao chúng ta cần Anaconda khi chúng ta có pip?
- 12. Tại sao chúng ta cần ssh không mật khẩu Hadoop?
- 13. Tại sao chúng ta cần toán tử "delete []"?
- 14. Tại sao chúng ta cần JWT khi chúng ta có phiên khách hàng?
- 15. Tại sao chúng ta cần cả bộ ký tự UCS và Unicode?
- 16. Tại sao chúng ta cần các Dịch vụ Web RESTful?
- 17. Tại sao chúng ta cần giao diện trong Java?
- 18. Tại sao chúng ta cần phương pháp ContinueWith?
- 19. Tại sao chúng ta cần funcall trong Lisp?
- 20. Tại sao chúng ta cần toán tử === đặc biệt này?
- 21. Tại sao chúng ta cần các nhà thầu tĩnh?
- 22. Tại sao chúng ta cần Properties trong C#
- 23. PHP: Tại sao chúng ta cần hàm so sánh chuỗi?
- 24. Tại sao chúng ta cần sử dụng cơ số?
- 25. Tại sao chúng ta cần đặt khoảng trống trước% c?
- 26. Tại sao chúng ta cần scalaz.stream qua iteratee?
- 27. Tại sao chúng ta cần một thẻ fieldset?
- 28. Angular2 tại sao chúng ta cần es6-shim
- 29. Nodejs vs SignalR: tại sao chúng ta cần javascript phía máy chủ?
- 30. Tại sao chúng ta không thể thực hiện cả hai phương thức getAB() && `và` getAB() `?
sự khác biệt giữa ASPXAUT là gì H và AspnetCookie được tạo khi đăng nhập vào ứng dụng asp.net với chức năng đăng ký và đăng nhập không chính xác? –