Stel dat de naam van de databasetabel voor permanente cookie pcookies . is met de volgende kolommen:
- cookie_id (CHAR)
- user_id (INT)
- verlopen (DATETIME)
- zout (CHAR)
Stappen voor het maken van cookies:
- Maak na succesvol inloggen een cookie-record in de database aan onder een unieke id. Je kunt het genereren door hash_hmac('sha512', $token, $salt) waar $token=uniqid($user_id, TRUE) en $salt=md5(mt_rand()).
- Bewaar 'gebruikers-ID', 'vervaltijd' en 'salt' samen met de 'cookie-ID' in de database.
- Bewaar 'cookie-ID' en 'token' in cookie.
Verificatiestappen:
- Als er een permanente cookie is gevonden, controleer dan eerst of het record al dan niet beschikbaar is in de database.
- Als het record beschikbaar is, controleer dan of de cookie verloopt of niet.
- Als de cookie niet verloopt, valideer dan de cookie-ID met $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- Zodra de cookie is gevalideerd, verwijdert u deze uit de database en maakt u een nieuwe cookie volgens de bovenstaande stappen voor het maken van cookies.
- Als de cookie als ongeldig wordt bevonden, wis dan de cookie van het apparaat en verwijder alle andere cookierecords van de gebruiker uit de database, merk het gebruik op over een diefstalpoging en ga verder met het handmatige inlogproces.
Opmerkingen:
- Als de sessie beschikbaar is, negeer dan het controleren van de cookie.
- Wis na het uitloggen de cookie samen met het databaserecord.
- Sta gebruikers nooit toe gevoelige verzoeken uit te voeren, zoals wachtwoordwijzigingen of creditcardgegevens te bekijken vanuit een permanente cookie-login. Roep het wachtwoord op om in te loggen en voeg een vlag toe aan de sessie om alle verdere bewerkingen toe te staan.