Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để triển khai tính năng nhớ tôi?

Giả sử tên của bảng cơ sở dữ liệu cho cookie liên tục là pcookies với các cột sau:

  • cookie_id (CHAR)
  • user_id (INT)
  • hết hạn (DATETIME)
  • muối (CHAR)

Các bước tạo cookie:

  1. Sau khi đăng nhập thành công, hãy tạo một bản ghi cookie trong cơ sở dữ liệu dưới một id duy nhất. Bạn có thể tạo nó bằng hash_hmac ('sha512', $ token, $ salt) trong đó $ token =uniqid ($ user_id, TRUE) và $ salt =md5 (mt_rand ()).
  2. Lưu trữ 'id người dùng', 'thời gian hết hạn' và 'muối' cùng với 'id cookie' trong cơ sở dữ liệu.
  3. Lưu trữ 'id cookie' và 'mã thông báo' trong cookie.

Các bước xác thực:

  1. Nếu tìm thấy một cookie liên tục, trước tiên hãy kiểm tra xem bản ghi có sẵn trong cơ sở dữ liệu hay không.
  2. Nếu có bản ghi thì hãy kiểm tra xem cookie có hết hạn hay không.
  3. Nếu cookie không hết hạn, hãy xác thực id cookie bằng $ cookie_id ==hash_hmac ('sha512', $ token_from_cookie, $ salt_from_db).
  4. Sau khi cookie được xác thực, hãy xóa nó khỏi cơ sở dữ liệu và tạo một cookie mới theo các bước tạo cookie ở trên.
  5. Nếu cookie được phát hiện là không hợp lệ, hãy xóa cookie khỏi thiết bị và xóa tất cả các bản ghi cookie khác của người dùng khỏi cơ sở dữ liệu, thông báo việc sử dụng về một nỗ lực đánh cắp và tiến hành quy trình đăng nhập thủ công.

Ghi chú:

  • Khi có phiên, hãy bỏ qua việc kiểm tra cookie.
  • Sau khi đăng xuất, hãy xóa cookie cùng với bản ghi cơ sở dữ liệu.
  • Không bao giờ cho phép người dùng thực hiện các yêu cầu nhạy cảm như thay đổi mật khẩu hoặc xem thông tin thẻ tín dụng từ đăng nhập cookie liên tục. Gọi mật khẩu để đăng nhập và thêm cờ trong phiên để cho phép tất cả các hoạt động trở đi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COALESCE () cho các trường trống (nhưng không rỗng)

  2. Làm thế nào để chạy các lệnh mysql từ thiết bị đầu cuối khi cài đặt MAMP?

  3. Câu hỏi và câu trả lời phỏng vấn MySql phổ biến cho người mới hơn + có kinh nghiệm

  4. Cách xóa các hàng trùng lặp khỏi bảng MySQL

  5. Có cách nào để khôi phục sau khi cam kết trong MySQL không?