2011-12-17 34 views
7

Các trang web như cửa hàng Facebook đã đăng nhập người dùng trong cookie (phía máy khách) hoặc phiên (phía máy chủ)? Bài kiểm tra của tôi cho thấy rằng họ làm việc đầu tiên.Các trang web như cửa hàng Facebook đã đăng nhập người dùng trong cookie hoặc phiên?

+0

Nếu chúng lưu trữ thông tin mà người dùng đăng nhập vào cookie, mọi người có thể đăng nhập với tư cách là người khác. Vì vậy, nó * có thể * không phải vậy;) –

+0

Phiên thường được khóa tắt của một giá trị ngẫu nhiên được lưu trữ trong cookie. Cookie thường sẽ không chứa bất kỳ dữ liệu nhận dạng nào do hậu quả, và nếu có, nó sẽ được xác thực bởi phía máy chủ bằng một số phương tiện khác. –

+0

cookie lưu trữ id duy nhất.Máy chủ sử dụng id duy nhất này để xác thực. –

Trả lời

12

Thông thường, thông tin nhạy cảm như người dùng hiện đang đăng nhập phải được lưu trữ ở phía máy chủ - hãy nhớ, người dùng có thể đọc và sửa đổi cookie miễn phí.

Điều bạn có thể thấy là cookie phiên liên kết một khách hàng cụ thể với một phiên cụ thể trên máy chủ - đó là máy chủ biết phiên nào sẽ sử dụng cho bạn. Trong trường hợp này, thứ duy nhất mà cookie chứa là một ID phiên dài, ngẫu nhiên - dài và ngẫu nhiên nên không thể dễ dàng đoán được bởi kẻ tấn công.

Hành vi ăn cắp cookie phiên của người dùng khác được gọi là session hijacking.

Thông tin thêm:

+0

Cảm ơn Pekka ... nhưng bạn có thể giải thích thêm ... tôi nghĩ rằng một phiên trên một máy chủ là một tập tin ... tại sao bạn sẽ cần cả hai? – jon

+1

Cookie có thể được mã hóa và sử dụng tổng kiểm tra để tránh bị sửa đổi hoặc đọc: P – Esailija

+0

@jon đọc về cách phiên hoạt động (ví dụ: trong chương Phiên trong hướng dẫn sử dụng PHP). Cookie cần thiết cho Facebook để biết người dùng nào có phiên nào. –

2

Họ sử dụng phiên phía máy chủ kết hợp với một cookie.

Cookie giữ ID, ID này được gửi tới FaceBook và máy chủ kiểm tra chi tiết cho phiên có ID đó.

+0

Cảm ơn Richard, nhưng tại sao họ cần phiên làm việc? .. khi chúng ta đang nói về các phiên, chúng ta đang nói về ví dụ: $ _SESSION ['user'] – jon

4

Tôi nghĩ ý tưởng đằng sau $_sessions là máy chủ xử lý thông tin của chính nó nhanh hơn và hiệu quả hơn là nhận thông tin hàng loạt từ khách hàng.

Nhìn vào nó theo cách này:

Bạn (máy chủ) và một người bạn (khách hàng) đang nói xấu về người bạn khác của bạn Cindy, không bạn bạn cung cấp cho bạn mọi chi tiết thông tin về cô ấy (màu tóc, chiều cao , v.v ...)? Không, đó sẽ là một sự lãng phí thời gian. Việc xử lý thông tin bạn đã biết về Cindy nhanh hơn rất nhiều (trên tệp $_session, phía máy chủ) và chỉ nhận được thông tin duy nhất ($_cookies) từ bạn của bạn (khách hàng).

Hiệu quả: "Này, bạn có nghe những gì Cindy đã làm tối qua không?"

KHÔNG hiệu quả: "Này bạn có nghe thấy những gì Cindy với mái tóc nâu, mắt xanh, vừa xây dựng, vv ... đã làm đêm qua?"

Rõ ràng, điều này không tóm tắt đầy đủ $_sessions$_cookies, nhưng có thể nó sẽ giúp ai đó hiểu được quản lý dữ liệu ngắn hạn hiệu quả.

0

Họ sử dụng các phiên sử dụng và sau đó lưu trữ một số thông tin vào cookie, như user_id được đăng nhập với session_id = .../sau đó đăng ký phiên session_id đó để xem liệu người dùng đó có còn đăng nhập không. là một sự lãng phí tài nguyên. Theo quan điểm của tôi, tôi lưu trữ thông tin quan trọng vào các phiên và thông tin lớn vào cookie

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