Recentemente mi è stato contestato di creare un framework Login che contiene i dati dell'utente in un database separato che connetto tramite una connessione SOAP. Ora, ho fatto qualcosa in questo senso prima di usare solo MySQL.
Ora, per creare il sistema di login, memorizzo le informazioni utente restituite in $_SESSION
variabili; Restituiscono la password in testo semplice (insieme ad altre informazioni) - non sono sicuro del perché - tuttavia, non memorizzo la password in testo semplice; piuttosto crittaggio la password con una chiave univoca per ogni utente.
Per verificare se l'utente è attualmente connesso, utilizzo le loro sessioni utilizzando 2 diversi parametri hash e confrontati con logged_in__string
che viene eseguita al login; questa è la configurazione di base:
$_SESSION['logged_in__string'] = hash ( 'sha512', 'USER_PASSWORD' . $_SERVER['HTTP_USER_AGENT'] );
Dopo averlo creato, crittografo la password utilizzando una chiave univoca per ogni utente; Quindi crea una nuova funzione, check()
che decrittografa la password e crea il valore hash confrontandolo con $_SESSION['logged_in__string']
e, se uguale, l'utente ha effettuato l'accesso.
Il mio interesse è nelle variabili $_SESSION
. Quali sono alcuni potenziali rischi nell'approccio che ho adottato e, se ce ne sono, quali sono alcuni buoni metodi per proteggere queste sessioni per l'utente.