Dopo aver postato this qualche tempo fa, ho deciso di creare la mia capacità di registrazione/autenticazione in PHP. Mi piacerebbe a chiunque di segnalare i difetti/opportunità di miglioramento, in particolare in tutto ciò che è memorizzato nella sessione di ...Si prega di criticare i miei sforzi di autenticazione PHP
Il flusso logico è:
1 - utente si registra utilizzando e-mail come nome utente, un "sito nome "che poi fa parte di qualsiasi url cui avranno accesso e una password di almeno 6 caratteri che deve contenere lettere e numeri (so che potrebbe essere più forte)
2 - A condizione che l'utente e il sito siano unici , Li memorizzo entrambi, insieme a una stringa generata a caso (salt) in una riga nella tabella auth nel mio database. Quindi prendo la password dell'utente, concatenando il sale e archiviato un hash MD5 di questa password salata nella stessa riga di database
3 - Quando un utente effettua il login, prendo la password che ha inserito e concatena il sale ad esso, creare un hash MD5 di questo e confrontarlo con quello che ho memorizzato nel database - se corrispondono, l'utente ha inserito la password corretta e il loro nome utente viene scritto nella sessione
4 - Su ogni richiesta, utilizzo il nome utente memorizzato nella sessione per interrogare il database e leggere il nome del sito associato a questo utente. Poi lo paragono al nome del sito nell'URL stesso, e se corrispondono corrispondono a una variabile accessibile al resto o allo script (non una variabile globale, è solo leggibile dal mio controller che decide se un utente può vedere una pagina particolare) se i due nomi dei siti non corrispondono, l'utente viene reindirizzato al login
La mia preoccupazione è che qualcuno possa scrivere nella sessione e quindi essere in grado di accedere alle pagine delle persone se conoscono il nome utente che hanno firmato con? Come faresti a prevenire questo?
Prima che qualcuno mi accusi di negligenza dal modo in cui questo è un progetto personale per l'apprendimento - Non sto esponendo i dati dei clienti!
È consigliabile 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 che è sia agnostico che indipendente dal database. – caw