Đầu tiên, hãy để tôi nói với bạn điều này. Không có gì là an toàn 100%. Không có gì là kín gió, và không có gì là thiêng liêng. Nếu đủ động cơ, kẻ tấn công sẽ phá vỡ mọi biện pháp phòng thủ phía máy chủ mà bạn có thể đặt (trừ khi bạn đang sử dụng HTTPS, đó là một câu chuyện khác).
Bạn có thể sử dụng cookie, nhưng cookie rất dễ bị lộ và dễ sửa đổi. Không bao giờ lưu trữ dữ liệu cá nhân hoặc các cấp độ truy cập trong cookie. Vì nó dễ bị đánh cắp / sửa đổi bởi kẻ tấn công.
Các phiên cũng không an toàn 100%. ID phiên, mà máy chủ sử dụng để xác định máy khách, được gửi bằng một trong 2 cách. biến $ _GET (xấu) hoặc cookie (tốt hơn, nhưng vẫn khá tệ). Có nghĩa là, nếu bạn đăng nhập với tư cách quản trị viên, qua một Wi-Fi không an toàn, kẻ tấn công có kỹ năng (và theo ý tôi là một pr0 haxx0r đã tải xuống một trình dò tìm HTTP đơn giản) có thể dễ dàng lấy cắp SESSION ID của bạn. Và trong khi không lấy được mật khẩu của bạn, máy chủ sẽ nhận dạng sai kẻ tấn công là bạn và cấp cho hắn bất kỳ quyền truy cập nào mà bạn có thể có / có.
Vậy lam gi? Hầu hết các phiên đều an toàn. Khuyên người dùng của bạn không đăng nhập trong một mạng không an toàn (xe buýt, quán cà phê internet, v.v.). Nếu bạn muốn cho phép ủy quyền người dùng của mình tồn tại theo thời gian, thì cần phải có cookie. Tôi thường sử dụng hệ thống 2 cookie nếu tôi cần:
userid=12345
hash=password_hash($userid . $hashed_password, PASSWORD_DEFAULT)
Sau đó, tôi có một cái gì đó để so khớp và thông tin chi tiết của người dùng không được tiết lộ.
Nhưng như tôi đã nói, cuối cùng, nếu bạn thực sự THỰC SỰ muốn bảo mật người dùng của mình, ở trên đối với mọi thứ khác được viết trong câu trả lời này, hãy tự tải HTTPS.