Così si desidera un "Ricordami su questo computer"? Ecco un modo indipendente dal linguaggio come si può fare:
- Creare una tabella di DB con almeno
cookie_id
e user_id
colonne. Se necessario, aggiungere anche cookie_ttl
e ip_lock
. I nomi delle colonne parlano da soli, suppongo.
- Al primo accesso (se necessario solo con l'opzione "Ricordami" selezionata), generare una chiave lunga, unica, difficile da indovinare che rappresenta lo
cookie_id
e memorizzarla nel DB insieme allo user_id
. Inoltre, memorizzalo come valore del cookie di un cookie con un nome di cookie specificato prima. Per esempio. remember
. Dai al cookie una lunga durata, ad es. un anno.
- Ad ogni richiesta, verificare se l'utente ha effettuato l'accesso. In caso contrario, controllare il valore del cookie
cookie_id
associato al nome del cookie remember
. Se è presente ed è valido in base al DB, accedere automagicamente all'utente associato allo user_id
e posticipare nuovamente l'età del cookie.
Per quanto riguarda i rischi per la sicurezza, se la chiave è lunga e sufficientemente mista (almeno 30 caratteri misti), le possibilità di forzare l'accesso brute sono trascurabili. Inoltre, probabilmente hai già capito a cosa serve la colonna opzionale ip_lock
. Dovrebbe rappresentare l'indirizzo IP dell'utente. È possibile aggiungere una casella di controllo aggiuntiva "Blocca l'accesso a questo IP (solo se si dispone di un IP statico)" in modo che il server possa utilizzare l'indirizzo IP dell'utente come convalida aggiuntiva.
E se uno ha dirottato il valore del cookie da un utente senza un blocco IP? Bene, non c'è molto da fare contro questo. Convivici. La cosa del "ricordami di me" è divertente sotto ogni forum e account - i dirottatori non ci farebbero molto male, ma non lo userei certamente per i pannelli di amministrazione e quel tipo di pagine web che controllano le cose sul lato server.
Dopo tutto è abbastanza semplice. In bocca al lupo.
Chi può rispondere a questa domanda può anche prendere in considerazione i problemi di sicurezza relativi a questo argomento? Ad esempio, come impedire l'accesso automatico tramite la copia del cookie. Grazie. –
Quindi, almeno menziona il rischio intrinseco di sicurezza dell'uso delle sessioni;) – Franz
Dovresti riutilizzare un framework di autenticazione esistente quando possibile, perché, in realtà, è complesso. Ad esempio, dai un'occhiata a https://github.com/delight-im/PHP-Auth – caw