Đây là một chi nhánh của một câu hỏi khác: What is the best way to implement "remember me" for a website?Luôn đăng nhập vào các phương pháp hay nhất: Tên người dùng trong cookie làm cách nào để bảo mật hơn?
Câu trả lời đầu là để thực hiện điều này: http://jaspan.com/improved_persistent_login_cookie_best_practice
Một bản tóm tắt:
Sử dụng một số ngẫu nhiên như một dòng Token, và một người khác dưới dạng Mã thông báo đăng nhập. Đặt các cookie đó vào cookie Lưu giữ đăng nhập, cùng với tên người dùng. Chỉ định cookie phiên thứ hai, bình thường. Mỗi lần người dùng đến mà không có cookie phiên, hãy sử dụng cookie Đã đăng nhập lưu trú. Phát hành mã mới, lần này bằng Mã thông báo đăng nhập ngẫu nhiên mới, giữ Mã số Mã thông báo giống nhau.
Tại sao bao gồm tên người dùng? Làm thế nào là giúp đỡ? Mã thông báo Series phải đủ để xác định người dùng và chuỗi. Series Token đã được thêm vào trong phương pháp này để ngăn chặn một cuộc tấn công DoS, nơi kẻ tấn công chỉ đoán tất cả tên người dùng và truy cập trang web cùng một lúc, đăng xuất tất cả mọi người. Nhưng tại sao nó lại có ý nghĩa khi bỏ tên người dùng?
AFAICT bao gồm tên người dùng thực hiện hai việc. Thứ nhất, nó làm cho việc ghi nhớ đăng nhập trở nên khó khăn hơn bằng cách gửi các chuỗi số ngẫu nhiên. (DoS sẽ chỉ thành công nếu bạn đoán Mã thông báo chuỗi hợp lệ _and_ tên người dùng được ghép nối của nó.) Thứ hai, tên người dùng bảo vệ chống lại các va chạm vô tội giữa các Dòng sản phẩm được cấp cho người dùng khác nhau. Nếu không có tên người dùng, xung đột Dòng mã sẽ giống như một dấu hiệu trộm cắp. Tất nhiên nếu bạn có thể đảm bảo rằng mọi Mã thông báo mới là duy nhất trong số tất cả các Thẻ hàng loạt được phát hành trước đây vẫn còn hợp lệ thì đây không phải là vấn đề. – ottomeister
Điều này có ý nghĩa nhất cho đến nay. Trong một hệ thống rất phân tán, trong đó việc kiểm tra tính độc đáo đối với Series Tokens không thực hiện được, tôi có thể thấy tại sao bạn lại bao gồm tên người dùng hoặc, tôi thích, một băm của tên người dùng. Nhưng nếu Series Tokens là duy nhất, cũng có thể lấy tên người dùng khỏi những kẻ tấn công tiềm năng. –
Không tốt hơn khi sử dụng ID người dùng thay vì tên người dùng vì hiệu suất tra cứu số nguyên so với chuỗi không? – axelbrz