2014-05-20 18 views

Trả lời

-1

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.

4

.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

20

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.

+0

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? –

1

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

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