2011-02-01 29 views
7

Tôi đang xây dựng một ứng dụng RESTful. Tôi dự định sử dụng OpenID để xác thực người dùng. Hiện tại, tôi đang sử dụng LightOpenID để xác thực OpenID và tôi có thể xác thực người dùng của mình.Quản lý phiên trong ứng dụng REST sau khi xác thực với OpenID

Câu hỏi của tôi là tiếp theo là gì? sau khi xác thực!

  1. Vì, ứng dụng REST của nó, tôi sẽ phải sử dụng Cookie để quản lý phiên .. phải không?
  2. Tôi lưu trữ những giá trị nào trong Cookie?
  3. Làm cách nào để xác thực phiên và đăng xuất của người dùng?

Tôi đã tìm kiếm các ví dụ liên quan đến triển khai nhưng tất cả các ví dụ đều dừng ở xác thực và không nói về quản lý phiên! Tôi muốn biết cách bạn quản lý các phiên trong các ứng dụng của bạn và nếu các thực tiễn tốt nhất có thể và các mối quan tâm trong việc thực hiện một cách tiếp cận.

Nếu bạn biết bất kỳ triển khai tham chiếu nào, vui lòng cung cấp cho tôi liên kết.

Trả lời

14

Chú ý:

Đầu tiên một số lời khuyên bảo mật quan trọng bạn nên lưu ý:

câu hỏi của bạn:

Kể từ khi, một ứng dụng REST của nó, tôi sẽ phải sử dụng Cookies để quản lý phiên .. phải không?

sử dụng phiên sẽ an toàn nhất (tốt nhất), nhưng tất nhiên có nhiều hơn solutions to session management. Nhưng nếu bạn chỉ sử dụng cookie (không có php $_SESSION) thì bạn nên mã hóa cookie của mình. Nhưng tôi sẽ khuyên bạn chỉ nên sử dụng $ _SESSION.

Tôi lưu trữ những giá trị nào trong Cookie?

Bạn không lưu trữ bất kỳ thứ gì trong cookie. $_SESSION tạo cookie (tự động => bạn không phải suy nghĩ về nó) cho bạn là duy nhất. Mọi thứ bạn đưa vào $_SESSION được lưu trữ trên máy chủ để người dùng không thể đọc được. Bạn có thể lưu trữ bất kỳ thông tin nào bạn muốn lưu trữ trong phiên, nhưng hãy nhớ rằng không bao giờ lưu trữ dữ liệu nhạy cảm (số pin, thẻ tín dụng, mật khẩu, v.v.) trong ứng dụng của bạn. Tôi đã mentoined rằng $ _SESSION của bạn được lưu trữ trên máy chủ, nhưng cookie có một định danh duy nhất để phù hợp với phiên được lưu trữ trên đĩa (hoặc cơ sở dữ liệu) có thể là guessed(spoofed).

Làm cách nào để xác thực phiên?

Bạn xác thực phiên bằng cách kiểm tra thông tin được lưu trữ trong phiên. Tôi giả sử bạn lưu trữ ít nhất $_SESSION['id'] = $openid->identity; bên trong phiên của bạn. Hãy nhớ rằng sau khi người dùng đăng nhập vào trang web của bạn bằng cách sử dụng openid, bạn nên regenerate your session(id) để ngăn chặn session fixation.

Làm cách nào để đăng xuất người dùng?

bạn chỉ cần gọi session_destroy và tất cả dữ liệu được lưu trữ trong phiên sẽ bị xóa.


Tôi hy vọng điều này giải thích tất cả các câu hỏi của bạn.

PS:

A session in the cookie jar mang đến cho bạn một giới thiệu cơ bản để phiên (mặc dù tôi không nhìn thấy nó đề cập đến phiên cố định: $).

+0

cảm ơn vì đã đưa ra giải thích mở mắt này về quản lý phiên. +5 cho các liên kết thông tin bổ sung mà bạn đã cung cấp! –

+0

@Abdel bạn được chào đón: P. – Alfred

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