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:
- 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()).
- Przechowuj „identyfikator użytkownika”, „czas wygaśnięcia” i „sól” wraz z „identyfikatorem pliku cookie” w bazie danych.
- Zapisz „identyfikator pliku cookie” i „token” w pliku cookie.
Kroki uwierzytelniania:
- Jeśli zostanie znaleziony trwały plik cookie, najpierw sprawdź, czy rekord jest dostępny w bazie danych, czy nie.
- Jeśli rekord jest dostępny, sprawdź, czy plik cookie wygasł, czy nie.
- Jeśli plik cookie nie wygaśnie, sprawdź jego identyfikator przez $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- Gdy plik cookie zostanie zweryfikowany, usuń go z bazy danych i utwórz nowy plik cookie zgodnie z powyższymi krokami tworzenia pliku cookie.
- 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.