Sự khác nhau giữa cookie và phiên?


154

Tôi đang được đào tạo về phát triển web và đang tìm hiểu về JSP & Servlets . Tôi có một số kiến ​​thức về HttpSession- Tôi đã sử dụng nó trong một số dự án mẫu của tôi.

Trong các trình duyệt, tôi đã thấy tùy chọn "xóa cookie". Nếu tôi xóa cookie, nó cũng xóa HttpSession.

Là cookie và phiên giống nhau? Sự khác biệt giữa chúng là gì?


Đồng thời xem câu hỏi này: < stackoverflow.com/questions3536562/iêu > Cụ thể, các nhận xét về cookie đã ký.
Joel Coehoorn

Tôi nghĩ rằng câu trả lời thứ hai cho câu hỏi này là thích hợp hơn, Nếu bạn chọn đó là câu trả lời tốt nhất, nhiều người sẽ đọc nó.
Suraj Jain

Câu trả lời:


180

Phiên là các tệp phía máy chủ chứa thông tin người dùng, trong khi Cookies là các tệp phía máy khách chứa thông tin người dùng. Phiên có một định danh duy nhất ánh xạ chúng đến người dùng cụ thể. Mã định danh này có thể được chuyển qua URL hoặc được lưu vào cookie phiên.

Hầu hết các trang web hiện đại sử dụng cách tiếp cận thứ hai, lưu mã định danh trong Cookie thay vì chuyển nó trong một URL (điều này gây rủi ro bảo mật). Bạn có thể đang sử dụng phương pháp này mà không biết và bằng cách xóa cookie, bạn sẽ xóa các phiên phù hợp của chúng một cách hiệu quả khi bạn xóa định danh phiên duy nhất có trong cookie.


10
" Truyền nó trong một URL (điều này gây ra rủi ro bảo mật). " Thực sự cả hai cách tiếp cận đều có rủi ro bảo mật (những cách khác nhau). ID bí mật trong URL có thể được bảo mật nếu được thực hiện đúng cách và nếu người dùng hiểu rằng URL đó là bí mật và không thể được đăng trong một diễn đàn công khai.
tò mò

1
"Mã định danh có thể được chuyển qua URL hoặc được lưu vào cookie phiên." . Ở đâu? phía khách hàng hay máy chủ? cảm ơn bạn đã làm rõ hơn
Adib Aroui

4
@whitelettersandblankspaces Cookie phiên được lưu trữ trên máy khách (và giá trị của nó chứa định danh phiên duy nhất được gửi với mỗi yêu cầu để ánh xạ phiên trình duyệt tới phiên người dùng trên máy chủ).
WynandB

306

Cookie chỉ đơn giản là một chuỗi văn bản ngắn được gửi qua lại giữa máy khách và máy chủ. Bạn có thể lưu trữ name=bob; password=asdfastrong một cookie và gửi nó qua lại để xác định ứng dụng khách ở phía máy chủ. Bạn có thể nghĩ về điều này như thực hiện một cuộc trao đổi với một giao dịch viên ngân hàng không có trí nhớ ngắn hạn và cần bạn xác định chính mình cho mỗi giao dịch. Tất nhiên sử dụng cookie để lưu trữ thông tin loại này là không an toàn khủng khiếp. Cookies cũng bị giới hạn về kích thước.

Bây giờ, khi nhân viên giao dịch ngân hàng biết về vấn đề trí nhớ của anh ấy / cô ấy, anh ấy / cô ấy có thể ghi lại thông tin của bạn trên một tờ giấy và gán cho bạn một số id ngắn. Sau đó, thay vì cung cấp số tài khoản và bằng lái xe cho mỗi giao dịch, bạn chỉ có thể nói "Tôi là khách hàng 12"

Dịch nó sang Máy chủ web: Máy chủ sẽ lưu trữ thông tin thích hợp trong đối tượng phiên và tạo ID phiên mà nó sẽ gửi lại cho máy khách trong cookie. Khi máy khách gửi lại cookie, máy chủ có thể chỉ cần tra cứu đối tượng phiên bằng ID. Vì vậy, nếu bạn xóa cookie, phiên sẽ bị mất.

Một cách khác là máy chủ sử dụng viết lại URL để trao đổi id phiên.

Giả sử bạn có một liên kết - www.myserver.com/myApp.jsp Bạn có thể đi qua trang và viết lại mọi URL dưới dạng www.myserver.com/myApp.jsp?sessionID=asdfhoặc thậm chí www.myserver.com/asdf/myApp.jspvà trao đổi định danh theo cách đó. Kỹ thuật này được xử lý bởi bộ chứa ứng dụng web và thường được bật bằng cách đặt cấu hình để sử dụng các phiên không nấu.


29
Đây là một lời giải thích tuyệt vời neo trong một tương tự thế giới thực tuyệt vời. Câu trả lời này nên được nâng cao hơn. Rất dễ tiếp cận với những người mới, những người có khả năng hỏi một câu hỏi như vậy.
dùng798719

2
Điều gì xảy ra nếu tôi là người dùng và người khác biết ID phiên của tôi?
Maria Ines Parniari

3
@ I19 Có thể, họ có thể mạo danh bạn. Điều này đã xảy ra trong các tình huống cờ bạc trực tuyến - Đánh hơi wifi khách sạn, đánh cắp ID phiên và truy cập tài khoản. Đảm bảo một phiên là một câu chuyện khác hoàn toàn.
Chris Cudmore

2
Vậy ai tạo ra cookie đầu tiên? Máy chủ hay máy khách? Hoặc là phụ thuộc vào ứng dụng này? (Tôi muốn nói rằng máy chủ vì nếu không nó gây ra các mối đe dọa bảo mật, nhưng tôi nghĩ nó đáng được đề cập?)
nha

4
@nha Máy chủ tạo phiên và chuyển nó trong phản hồi với cookie. Phiên được tạo tùy thuộc vào logic ứng dụng khi bạn muốn tạo. Máy khách cũng có thể tạo cookie nhưng nó có thể không được sử dụng nhiều trong kịch bản xác định phiên vì máy chủ có thể không biết giá trị đại diện cho phiên nào.
Azeem

4

Cookie và phiên đều lưu trữ thông tin về người dùng (để làm cho yêu cầu HTTP trở nên rõ ràng) nhưng điểm khác biệt là cookie lưu trữ thông tin ở phía máy khách (trình duyệt) và phiên lưu trữ thông tin ở phía máy chủ. Một cookie bị giới hạn theo nghĩa là nó lưu trữ thông tin về người dùng bị giới hạn và chỉ lưu trữ nội dung giới hạn cho mỗi người dùng. Một phiên không giới hạn theo cách như vậy.



1

Cookie về cơ bản là một mảng toàn cầu được truy cập trên các trình duyệt web. Nhiều lần được sử dụng để gửi / nhận giá trị. nó hoạt động như một cơ chế lưu trữ để truy cập các giá trị giữa các biểu mẫu. Cookies có thể bị vô hiệu hóa bởi trình duyệt có thêm một ràng buộc đối với việc sử dụng chúng so với phiên.

Phiên có thể được định nghĩa là một cái gì đó giữa đăng nhập và đăng xuất. thời gian giữa người dùng đăng nhập và đăng xuất là một phiên. Phiên chỉ lưu trữ giá trị cho thời gian phiên tức là trước khi đăng xuất. Phiên được sử dụng để theo dõi các hoạt động của người dùng, sau khi anh ta đăng nhập.


0

Google JSESSIONID . Điều này sẽ giải thích cách API Servlet ban đầu sử dụng viết lại URL và sau đó, nếu cookie được bật, cookie để quản lý phiên.

HTTP không trạng thái nên trình duyệt máy khách phải gửi id của phiên tới máy chủ với mỗi yêu cầu. Máy chủ, thông qua bất kỳ phương tiện nào, sử dụng id này để truy xuất bất kỳ dữ liệu nào cho phiên đó làm cho nó có sẵn trong vòng đời của yêu cầu.


0

Phiên trong Asp.net:

1. Làm mờ dữ liệu trên tất cả các ứng dụng.

2.Xác định dữ liệu nếu phiên hiện tại còn sống. Nếu chúng ta cần một số dữ liệu để có thể truy cập từ nhiều bộ điều khiển acitons và xem phiên là cách để lưu trữ và truy xuất dữ liệu.

3.Sairs là các tệp phía máy chủ chứa thông tin người dùng. [Phiên là định danh duy nhất ánh xạ chúng tới người dùng cụ thể]

Dịch nó sang Máy chủ web: Máy chủ sẽ lưu trữ thông tin thích hợp trong đối tượng phiên và tạo ID phiên mà nó sẽ gửi lại cho máy khách trong cookie. Khi máy khách gửi lại cookie, máy chủ có thể chỉ cần tra cứu đối tượng phiên bằng ID. Vì vậy, nếu bạn xóa cookie, phiên sẽ bị mất.


0

Cookie là một cách để thực hiện phiên giữa máy khách và máy chủ, theo cách này, thông tin phiên được lưu trữ trong cookie. Nhưng đây không phải là cách duy nhất để giữ thông tin phiên, một cách khác là lưu trữ thông tin phiên trong Url.


0

Cookies được lưu trữ trong trình duyệt dưới dạng định dạng tệp văn bản. Nó được lưu trữ lượng dữ liệu giới hạn. Nó chỉ cho phép 4kb [4096byte] . $ _ Biến COOKIE sẽ không giữ nhiều cookie có cùng tên

chúng ta có thể truy cập các giá trị cookie một cách dễ dàng. Vì vậy, nó kém an toàn hơn . Hàm setcookie () phải xuất hiện TRƯỚC

<html> 

nhãn.

Các phiên được lưu trữ trong phía máy chủ. Nó được lưu trữ số lượng dữ liệu không mong muốn. Nó đang giữ nhiều biến trong phiên. chúng tôi không thể truy cập các giá trị cookie một cách dễ dàng . Vì vậy, nó an toàn hơn .

Liên kết: sự khác biệt giữa cookie và phiên


Chà, thực sự bạn có thể giữ nhiều dữ liệu trong cookie. Ngoài ra, các phiên không thể thực sự chứa lượng dữ liệu không giới hạn. Bạn bị giới hạn khá nhiều bởi dung lượng RAM bạn có.
Koray Tugay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.