2009-01-24 36 views
5

Cách tốt nhất và an toàn nhất để thực hiện khi viết thư viện xác thực theo kiểu xem-bộ điều khiển kiểu là gì?Cách tốt nhất để xác thực trong PHP

Những điều khiến tôi gặp khó khăn trong việc theo dõi hoạt động của người dùng và ghi nhớ người dùng thông qua cookie hoặc lưu trữ phiên trong cơ sở dữ liệu?

Cảm ơn trước :).

+0

Bạn nên sử dụng lại khung xác thực hiện tại bất cứ khi nào có thể, bởi vì, thực sự, nó phức tạp. Ví dụ: hãy xem https://github.com/delight-im/PHP-Auth, cả hai đều không có khung công tác bất khả tri và không có cơ sở dữ liệu. – caw

Trả lời

3

Cách đơn giản nhất để triển khai thực hiện là với SESSIONS PHP.

chỉ session_start(); gần đầu tập lệnh của bạn và bạn có quyền truy cập vào mảng toàn cầu $ _SESSION để giữ dữ liệu xác thực của mình.

Tùy thuộc vào cấu hình máy chủ của bạn, tất cả dữ liệu được lưu trữ trong $ _SESSION sẽ chỉ khả dụng trên máy chủ mà từ đó nó được lưu trữ (với một vài ngoại lệ). Bạn có thể cấu hình nó để được lưu trong một thư mục tạm thời, trong memcached, hoặc thậm chí là một cơ sở dữ liệu.

Điều duy nhất được truyền giữa máy khách và máy chủ của bạn là "khóa phiên". Khóa có thể được chuyển qua cookie hoặc ghi đè URL (được xử lý trong suốt bởi bộ đệm đầu ra start_session).

+1

Không thể sai với điều này. – UnkwnTech

+0

Cảm ơn. Nhưng làm thế nào tôi có thể theo dõi hoạt động của người dùng và làm cách nào tôi có thể cung cấp cho người dùng tùy chọn để duy trì trạng thái đăng nhập trong 1 tháng? Tôi nên lưu trữ những thứ gì trong cơ sở dữ liệu, phiên hoặc cookie? Và cách tốt nhất để kiểm tra xem mọi thứ có ổn không? –

+0

Đó sẽ là thứ để đặt rõ ràng trong cookie có thêm băm, sau đó trong DB lưu trữ IP, nếu người dùng đăng nhập từ một ip khác hoặc băm trong cookie không khớp với một trong db thì yêu cầu người dùng để đăng nhập lại. – UnkwnTech

4

Nếu bạn muốn sử dụng phiên, bạn phải đảm bảo chúng chống lại các cuộc tấn công như session fixationsession hijacking.

Để ngăn chặn cả hai bạn phải đảm bảo rằng chỉ các yêu cầu được xác thực mới được phép sử dụng phiên. Điều này thường được thực hiện bằng cách chuỗi nhiều thông tin cụ thể (có thể là duy nhất) về khách hàng nhất có thể với phiên. Nhưng vì một số thông tin có thể thay đổi theo mọi yêu cầu (như địa chỉ IP), có thể khó tìm được thông tin tốt nhất.
Đây là lý do tại sao việc sử dụng phương thức được biểu thị là Trending là rất hữu ích.

Một biện pháp bảo vệ tốt khác là trao đổi ID phiên định kỳ. Do đó, thời gian tấn công trên ID phiên hợp lệ nhỏ hơn.

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