Ho un sistema di login creato in PHP. Al momento non ha la funzione "password dimenticata" e vorrei implementare la funzione.
Per questo ho intenzione di fare quanto segue:
- Quando l'utente invia il modulo con e-mail nella pagina "password dimenticata", viene inviata un'email con un token univoco di 50 caratteri.
- La chiave univoca generata viene memorizzata nel cookie di sessione utilizzando
$_SESSION['forgotPassToken'] = "tokenof50chars";
- La pagina chiede di digitare il token univoco inviato alla casella di posta elettronica dell'utente.
- Quando viene inserito il token, il codice controlla se il token in sessione e quello inserito è lo stesso.
- Se uguale, viene generato un nuovo nome di variabile di sessione
forgotPassVerified
e viene reindirizzato a una pagina in cui l'utente può immettere la nuova password e inviarla. - La password è cambiata e la sessione è distrutta. Pages chiede all'utente di accedere con la nuova password.
La mia domanda: è sicuro memorizzare il token generato casualmente nella sessione PHP o dovrei usare il database?
Non mi piace farlo nel database. Ecco perché mi sto avvicinando a questo modo di sessione.
Ecco i motivi per cui non sto utilizzando il database per la memorizzazione dei token:
- Alcuni utenti (cracker) inviano semplicemente il modulo con un'e-mail. Essi non controllare la posta in arrivo.
- Salva spazio database
- Riduci l'utilizzo dell'esecuzione di query SQL.