Come posso creare un assicurato “ricordati di me” sistema con PHP?
-
01-10-2019 - |
Domanda
Ho un sistema di login. Come posso implementare un sicuro ricordi di me sistema utilizzando i cookie.
Quale valore dovrebbe devo conservare in username e password biscotto, ma come posso assicurarla?
Soluzione
definire A Salt utente foreach in dB poi
sulla impostazione
$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time
setcookie(
"rememberMe",
crypt($username, $salt),
$expire_time,
'/'
);
sulla convalida
$_COOKIE['rememberMe'] === crypt($username, $salt)
Altri suggerimenti
Forse si potrebbe creare una stringa lettera 16 car / numero che viene associato a un database con l'utente e l'indirizzo MAC in modo che (a patto che le persone non stanno cercando troppo duro e spoofing Mac) solo quella macchina può accedere .
Forse si dovrebbe memorizzare (nel DB) visitatore IP, User Agent, fuso orario o plugin installati. Qualcosa che potrebbe essere facile da ottenere utilizzando Javascript, dal momento che ottenere l'indirizzo MAC potrebbe essere un problema.
Poi si può facilmente verificare se l'utente ha lo stesso IP, UA, fuso orario o plugin come l'ultima volta :) Oppure si potrebbe utilizzare MaxMind per controllare la sua posizione e confermare se si sta usando corretto fuso orario. Se c'è qualcosa di sospetto si dovrebbe gettare le credenziali di cookie.
non c'è molto ad esso ... non lasciate che i file della sessione vengono ripulite (ini impostazione session.gc_probability = 0
), e cambiare il cookie di sessione da temporaneo a permanente (session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered
impostazione ini).
Naturalmente, si sarebbe probabilmente vuole finalmente ripulire i file di sessione stantio, così si potrebbe sperimentare una molto bassa probabilità della verificano pulizia, o fare un po 'di pulizia esterna. Ad ogni modo, fino a quando l'utente mantiene il cookie di sessione in giro e si mantiene il file di sessione in giro, essi saranno "ricordati".