Điều tốt nhất để lưu trữ trong cookie là gì để giữ trạng thái đăng nhập liên tục?Điều gì sẽ được lưu trữ trong cookie cho hệ thống đăng nhập?
Tôi đã thấy nhiều trang web (và hướng dẫn cho người mới bắt đầu!) Chỉ lưu trữ một cái gì đó như validUser = 1 trong cookie. Rõ ràng là tôi có thể giả mạo điều đó và trang web sẽ cho rằng tôi là người dùng hợp lệ.
Nếu tên người dùng được lưu trữ trong cookie, tôi có thể giả mạo là bất kỳ người dùng nào bằng cách gửi cookie có tên người dùng trong yêu cầu của tôi. Nếu bạn lưu trữ tên người dùng và mật khẩu trong cookie, thì tôi phải biết tên người dùng và mật khẩu để đăng nhập. Thay vì phải tự nhập thông tin đăng nhập vào hộp mỗi lần, trình duyệt sẽ tự động gửi chúng với mọi yêu cầu trang.
Nhưng đây vẫn là một ý tưởng tồi? Lưu trữ một mật khẩu văn bản thuần túy không phải là một ý tưởng tuyệt vời, nhưng đó là cách nó sẽ được gửi trong dữ liệu POST khi đăng nhập. Và bên cạnh đó, nó có thể được lưu trữ băm. Nhưng tôi vẫn không cảm thấy thoải mái với nó.
Có lẽ không nên sử dụng cookie để lưu trữ bất kỳ thứ gì ngoại trừ ID phiên và dữ liệu người dùng được lưu trữ trên chính máy chủ. Đó có lẽ là một vị trí an toàn hơn cho nó, giả sử rằng máy chủ không được chia sẻ.
Nhìn vào một số phần mềm nguồn mở như phần mềm diễn đàn, chúng sử dụng một hệ thống phức tạp hơn, nhưng tôi không thể hiểu chính xác những gì nó đang làm từ việc lướt mã.
Tiêu chuẩn "thực hành tốt nhất" là gì?
Vậy đơn giản là chỉ lưu trữ id người dùng trong phiên đó? Đó là an toàn, và không cần phải lưu trữ thêm thông tin về một đăng nhập cụ thể trong cơ sở dữ liệu? (ví dụ: IP) và để thay đổi tất cả phiên/dữ liệu bất cứ khi nào họ truy cập lại, như tôi đã thấy các tập lệnh lớn này đang hoạt động? – Rob
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 – caw