Mysql
 sql >> Database >  >> RDS >> Mysql

Come implementare la funzione Ricordami?

Supponiamo che il nome della tabella del database per il cookie persistente sia pcookies con le seguenti colonne:

  • id_cookie (CHAR)
  • id_utente (INT)
  • scadenza (DATETIME)
  • sale (CHAR)

Passaggi per la creazione dei cookie:

  1. Dopo aver effettuato l'accesso, crea un record di cookie nel database con un ID univoco. Puoi generarlo da hash_hmac('sha512', $token, $salt) dove $token=uniqid($user_id, TRUE) e $salt=md5(mt_rand()).
  2. Memorizza 'user id', 'expiration time' e 'salt' insieme a 'cookie id' nel database.
  3. Memorizza 'cookie id' e 'token' nel cookie.

Passaggi di autenticazione:

  1. Se è stato trovato un cookie persistente, verifica prima se il record è disponibile nel database o meno.
  2. Se il record è disponibile, controlla se il cookie è scaduto o meno.
  3. Se il cookie non scade, convalida l'id del cookie con $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. Una volta che il cookie è stato convalidato, eliminalo dal database e crea un nuovo cookie secondo i passaggi di creazione del cookie sopra indicati.
  5. Se il cookie viene rilevato come non valido, cancella il cookie dal dispositivo ed elimina tutti gli altri record di cookie dell'utente dal database, nota l'utilizzo di un tentativo di furto e procedi al processo di accesso manuale.

Note:

  • Quando la sessione è disponibile, ignora il controllo dei cookie.
  • Dopo il logout, cancella il cookie insieme al record del database.
  • Non consentire mai agli utenti di eseguire richieste sensibili come la modifica della password o visualizzare le informazioni sulla carta di credito da un cookie di accesso persistente. Richiama la password per accedere e aggiungi un flag nella sessione per consentire tutte le operazioni successive.