2009-12-09 26 views
5

hiện đang sử dụng phiên để đăng nhập vào người dùng. nhưng khi tôi đóng trình duyệt và mở lại, tôi phải đăng nhập lại. làm thế nào để bạn keeo người dùng đăng nhập trong cho phép nói 2 tuần.giữ người dùng đăng nhập khi anh ấy truy cập lại cùng một trang?

là thông qua cookie sau đó?

+1

Có thể ai trả lời câu hỏi, vui lòng xem xét các vấn đề bảo mật về chủ đề này không? Ví dụ: cách ngăn đăng nhập tự động bằng cách sao chép cookie. Cảm ơn. –

+0

Sau đó, ít nhất phải đề cập đến rủi ro bảo mật vốn có khi sử dụng các phiên;) – Franz

+0

Bạn nên sử dụng lại khung xác thực hiện có 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 – caw

Trả lời

0

Có. Bạn sử dụng cookie để thực hiện chức năng "tự động đăng nhập" (hoặc "nhớ tôi").

Điều này google search hoặc SO search results, nên hướng bạn đến đúng hướng.

1

đọc này: http://www.php.net/manual/en/session.configuration.php

Các thiết lập mà bạn cần là session.cookie_lifetime. Cookie phiên (ví dụ: cookie không có thời gian tồn tại) sẽ bị xóa khi đóng trình duyệt. Nếu bạn muốn các phiên tồn tại lâu hơn, hãy đặt cài đặt đó trong php.ini, httpd.conf hoặc .htaccess. Có lẽ ngay cả với ini_set

Edit: Trên thực tế bạn có thể sử dụng chức năng này:

session_set_cookie_params (86400*30); 
session_start() 

86400 * 30 là 30 ngày.

Xem ở đây: http://www.php.net/manual/en/function.session-set-cookie-params.php

9

Vì vậy, bạn muốn có một "Hãy nhớ tôi trên máy tính này"? Dưới đây là cách không thể hiểu ngôn ngữ của cách bạn có thể thực hiện:

  1. Tạo bảng DB có ít nhất cookie_iduser_id cột. Nếu cần, hãy thêm cookie_ttlip_lock. Các tên cột nói cho chính nó tôi đoán.
  2. Đăng nhập lần đầu (nếu chỉ cần chọn tùy chọn "Nhớ thông tin đăng nhập của tôi"), tạo khóa dài, độc đáo, khó đoán đại diện cho cookie_id và lưu trữ số này trong DB cùng với user_id. Đồng thời lưu trữ giá trị này dưới dạng cookie của cookie với tên cookie được chỉ định trước. Ví dụ. remember. Cung cấp cookie lâu dài, ví dụ: một năm.
  3. Trên mọi yêu cầu, hãy kiểm tra xem người dùng có đăng nhập hay không. Nếu không, hãy kiểm tra giá trị cookie cookie_id được liên kết với tên cookie remember. Nếu nó ở đó và nó là hợp lệ theo DB, sau đó tự động đăng nhập người dùng liên kết với các user_id và trì hoãn tuổi cookie một lần nữa.

Vì những rủi ro bảo mật, nếu khóa dài và đủ hỗn hợp (ít nhất 30 ký tự hỗn hợp), thì cơ hội bắt buộc đăng nhập không đáng kể. Hơn nữa về bạn có thể đã hiểu những gì cột tùy chọn ip_lock là để được sử dụng cho. Nó phải đại diện cho địa chỉ IP của người dùng. Cuối cùng bạn có thể thêm một hộp kiểm bổ sung "Khóa đăng nhập vào IP này (chỉ khi bạn có IP tĩnh)" để máy chủ có thể sử dụng địa chỉ IP của người dùng làm xác thực bổ sung.

Và điều gì sẽ xảy ra nếu người dùng xâm nhập giá trị cookie từ người dùng mà không có khóa IP? Vâng, không có nhiều việc phải làm với điều này. Sống với nó. Điều "nhớ tôi" là buồn cười cho mỗi diễn đàn và tài khoản tấn công sẽ không làm tổn thương nhiều ở đó, nhưng tôi chắc chắn sẽ không sử dụng nó cho các bảng quản trị và loại trang web kiểm soát các công cụ phía máy chủ.

Đó là sau tất cả khá thẳng về phía trước. Chúc may mắn.

+0

Tôi nghĩ rằng nên lưu trữ tác nhân người dùng trong cơ sở dữ liệu, bởi vì nó khá phi logic mà cùng một người dùng sẽ muốn được ghi nhớ trong cả IE và firefox. Trong thực tế tất cả mọi thứ có thể được khai thác từ yêu cầu nên được lưu trữ để ngăn chặn ăn cắp cookie, phải không? .. –

+0

Doable, nhưng nó sẽ thất bại nếu người dùng nâng cấp UA. – BalusC

+0

Cách tốt hơn để người dùng nhập lại chi tiết của mình, hơn là kẻ xâm nhập truy cập. –

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