Tôi đang phát triển một hệ thống đăng nhập dựa trên PHP. Mỗi người dùng có một ID (một số) và một mật khẩu, được lưu trữ dưới dạng băm muối.Hệ thống đăng nhập bằng PHP sử dụng Cookie và Hashes muối
Tôi có thể tìm hiểu xem đăng nhập có thành công hay không, nhưng bây giờ tôi cần lưu trữ thông tin đó ở đâu đó (để người dùng không bị đăng xuất vĩnh viễn).
Trong quá khứ, tôi đã chơi với biến $ _SESSION. Tuy nhiên, chúng dường như bị xóa khi người dùng rời khỏi trình duyệt, điều không mong muốn. Ngoài ra, tôi không thể "giả định" rằng người dùng sẽ không cố gắng lừa hệ thống, vì vậy nó phải được an toàn.
Vì vậy, đây là những câu hỏi của tôi:
- Tôi có nên sử dụng
$_SESSION
hoặc$_COOKIE
? Những ưu điểm chính của mỗi phương pháp này là gì? - Cách triển khai hộp kiểm 'Nhớ thông tin đăng nhập của tôi'?
- Thông tin nào sẽ được lưu trữ trong biến phiên/cookie?
Lưu ý rằng không có vấn đề bảo mật cơ sở dữ liệu nào đang được xem xét trong câu hỏi cụ thể này.
Về số 3, những gì tôi có nghĩa chính xác là:
- Tôi có nên lưu trữ các ID và mật khẩu băm của người sử dụng trong cookie/session, hoặc
- Tôi có nên lưu trữ các ID và phi mật khẩu -hashed của người sử dụng trong cookie/session, hoặc
- tôi có nên lưu trữ một "SessionID" và mật khẩu (băm hoặc không băm?) hoặc
- tôi có nên lưu trữ một "SessionID", "ID" và mật khẩu (một lần nữa, băm hoặc không băm)?
Tôi muốn giữ trang web của mình an toàn nhưng hiệu quả và thân thiện với người dùng nhất có thể. Nếu một phương pháp dựa trên SessionID được thực hiện, tôi cũng đánh giá cao một số giải thích về cách lưu trữ nó trong cơ sở dữ liệu.
Cảm ơn bạn trước
EDIT: câu trả lời của Brian kết hợp Eran và dường như những gì tôi cần. Thật không may, tôi chỉ có thể đánh dấu một trong số họ là được chấp nhận. Tôi sẽ cố gắng tiếp tục và thực hiện để xem cái nào hữu ích hơn.
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ể, vì nó * phức tạp *. Ví dụ: hãy xem https://github.com/delight-im/PHP-Auth – caw