Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wdrożyć funkcję Zapamiętaj mnie?

Powiedzmy, że nazwa tabeli bazy danych dla trwałego pliku cookie to pcookies z następującymi kolumnami:

  • identyfikator pliku cookie (CHAR)
  • identyfikator użytkownika (INT)
  • wygaśnięcie (DATETIME)
  • sól (CHAR)

Kroki tworzenia plików cookie:

  1. Po pomyślnym zalogowaniu utwórz rekord cookie w bazie danych pod unikalnym identyfikatorem. Możesz go wygenerować przez hash_hmac('sha512', $token, $salt) gdzie $token=uniqid($user_id, TRUE) i $salt=md5(mt_rand()).
  2. Przechowuj „identyfikator użytkownika”, „czas wygaśnięcia” i „sól” wraz z „identyfikatorem pliku cookie” w bazie danych.
  3. Zapisz „identyfikator pliku cookie” i „token” w pliku cookie.

Kroki uwierzytelniania:

  1. Jeśli zostanie znaleziony trwały plik cookie, najpierw sprawdź, czy rekord jest dostępny w bazie danych, czy nie.
  2. Jeśli rekord jest dostępny, sprawdź, czy plik cookie wygasł, czy nie.
  3. Jeśli plik cookie nie wygaśnie, sprawdź jego identyfikator przez $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. Gdy plik cookie zostanie zweryfikowany, usuń go z bazy danych i utwórz nowy plik cookie zgodnie z powyższymi krokami tworzenia pliku cookie.
  5. Jeśli plik cookie zostanie uznany za nieprawidłowy, wyczyść plik cookie z urządzenia i usuń wszystkie inne zapisy plików cookie użytkownika z bazy danych, zwróć uwagę na próbę kradzieży i przejdź do ręcznego procesu logowania.

Uwagi:

  • Gdy sesja jest dostępna, zignoruj ​​sprawdzanie plików cookie.
  • Po wylogowaniu wyczyść plik cookie wraz z rekordem bazy danych.
  • Nigdy nie zezwalaj użytkownikom na wykonywanie poufnych żądań, takich jak zmiana hasła lub wyświetlanie informacji o karcie kredytowej, z trwałego logowania do plików cookie. Wywołaj hasło, aby się zalogować i dodaj flagę w sesji, aby umożliwić wszystkie dalsze operacje.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać rekurencyjne zapytanie SELECT w MySQL?

  2. Dopasuj 2 kolumny sql, jeśli =, a następnie zaktualizuj inną kolumnę o 1

  3. Nie można wstawić chińskiego znaku do MySQL

  4. mysql GDZIE MECZ PRZECIW

  5. Błąd MySQL 1093 - Nie można określić tabeli docelowej do aktualizacji w klauzuli FROM