Säg att databastabellens namn för beständig cookie är pcookies med följande kolumner:
- cookie_id (CHAR)
- användar-id (INT)
- utgång (DATETIME)
- salt (CHAR)
Stegen för att skapa cookies:
- Efter lyckad inloggning, skapa en cookie-post i databasen under ett unikt ID. Du kan generera den med hash_hmac('sha512', $token, $salt) där $token=uniqid($user_id, TRUE) och $salt=md5(mt_rand()).
- Lagra 'användar-id', 'utgångstid' och 'salt' tillsammans med 'cookie-id' i databasen.
- Lagra "cookie-id" och "token" i cookie.
Autentiseringssteg:
- Om det finns en beständig cookie, kontrollera först om posten är tillgänglig i databasen eller inte.
- Om posten är tillgänglig kontrollerar du om cookien förfaller eller inte.
- Om cookien inte upphör att gälla, validera cookie-id:t med $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- När cookien har validerats, radera den från databasen och skapa en ny cookie enligt ovanstående steg för att skapa kakor.
- Om kakan upptäcks som ogiltig, rensa kakan från enheten och radera alla andra cookieposter för användaren från databasen, notera användningen om ett stöldförsök och fortsätt till manuell inloggning.
Anmärkningar:
- Ignorera kontroll av cookie när sessionen är tillgänglig.
- När du har loggat ut rensar du cookien tillsammans med databasposten.
- Tillåt aldrig användare att utföra känsliga förfrågningar som lösenordsändring eller visa kreditkortsinformation från en ihållande cookie-inloggning. Anropa lösenord för att logga in och lägg till en flagga i sessionen för att tillåta alla vidare operationer.