17 Set Creare form di registrazione e login sicuro in PHP e MySQL
Tra le funzionalità di un’applicazione web non può mancare l’accesso ad un’area protetta tramite login e password. L’implementazione di questo tipo di funzionalità porta con sè implicazioni riguardanti soprattutto la sicurezza. Lo script distrugge semplicemente la sessione tramite la funzione session_destroy() ed effettua un redirect alla pagina di login. Il nome utente deve essere univoco, ossia non devono esserci due utenti con lo stesso username, dunque faremo una verifica in fase d’inserimento per evitare di memorizzare utenti doppioni. Tramite la costante PASSWORD_BCRYPT utilizziamo la funzione di hash bcrypt, che risulta molto resistente ad attacchi a forza bruta per via della sua “lentezza” nel trasformare una stringa nel suo hash corrispondente. La lunghezza del campo password è motivata dal fatto che tale attributo non conterrà la password così come l’utente la digita in fase di registrazione ma, come vedremo più avanti, verrà salvato l’hash di tale password.
Modulo di login
In questo tutorial abbiamo imparato a creare un sistema base di registrazione e accesso utente tramite PHP. Dopo aver compreso le basi di questo sistema, è possibile creare una logica più complessa che consente agli utenti di confermare la registrazione tramite verifica via email o di reimpostare la password. Poiché non bisogna mai memorizzare una password in chiaro, alla riga 13 eseguiamo un hashing della password così com’è. Un hash non è altro che una stringa di lunghezza fissa ottenuta mediante l’applicazione di una funzione di hash alla stringa di partenza.
Registrazione utente
Adesso che abbiamo l’HTML necessario per mostrare i due moduli, passiamo alla fase di creazione della tabella nel database che dovrà contenere gli utenti registrati. Abbiamo utilizzato l’attributo HTML5 required per obbligare l’utente a compilare i dati del modulo, in quanto sono necessari per il funzionamento dell’applicazione. Ricordiamoci che session_destroy() elimina tutti i dati memorizzati in una sessione collegati ad uno specifico PHPSESSID.
- Effettueremo questa operazione tramite la potente estensione PDO messa a disposizione dal linguaggio.
- Poiché non bisogna mai memorizzare una password in chiaro, alla riga 13 eseguiamo un hashing della password così com’è.
- Dopo aver compreso le basi di questo sistema, è possibile creare una logica più complessa che consente agli utenti di confermare la registrazione tramite verifica via email o di reimpostare la password.
- Il nome utente deve essere univoco, ossia non devono esserci due utenti con lo stesso username, dunque faremo una verifica in fase d’inserimento per evitare di memorizzare utenti doppioni.
- Tramite la costante PASSWORD_BCRYPT utilizziamo la funzione di hash bcrypt, che risulta molto resistente ad attacchi a forza bruta per via della sua “lentezza” nel trasformare una stringa nel suo hash corrispondente.
- L’implementazione di questo tipo di funzionalità porta con sè implicazioni riguardanti soprattutto la sicurezza.
Connessione al database
Per poter interagire con la base dati abbiamo bisogno di effettuare una connessione al database MySQL. Effettueremo questa operazione tramite la potente estensione PDO messa a disposizione dal linguaggio. Per generare l’hash, PHP mette a disposizione la funzione password_hash(), il cui secondo parametro indica l’algoritmo che si occuperà della generazione. Se il controllo ha esito negativo le informazioni inviate dall’utente vengono salvate nel database. Anche se non necessario per lo scopo del tutorial, con poche regole CSS possiamo rendere i nostri moduli esteticamente più gradevoli e accattivanti. In questo tutorial vedremo come creare un form di registrazione e login usando PHP e MySQL e lo faremo adottando le migliori pratiche in tema di sicurezza web.
Inserisci la vecchia password
- Abbiamo utilizzato l’attributo HTML5 required per obbligare l’utente a compilare i dati del modulo, in quanto sono necessari per il funzionamento dell’applicazione.
- Alla riga 20 abbiamo utilizzato la funzione bindParam() di PDO, che consente di filtrare automaticamente i dati da passare alla query prima che venga processata da PDO.
- In questo tutorial abbiamo imparato a creare un sistema base di registrazione e accesso utente tramite PHP.
- Anche se non necessario per lo scopo del tutorial, con poche regole CSS possiamo rendere i nostri moduli esteticamente più gradevoli e accattivanti.
- Tramite la keyword AUTO_INCREMENT diciamo a MySQL che il campo id deve incrementarsi in maniera automatica dopo ogni inserimento.
- In questo tutorial vedremo come creare un form di registrazione e login usando PHP e MySQL e lo faremo adottando le migliori pratiche in tema di sicurezza web.
Una delle 3 caratteristiche fondamentali di una funzione di hash sicura è quella di saper generare hash dai quali risulta impossibile risalire all’originale, se non per tentativi (attacco a forza bruta). Alla riga 20 abbiamo utilizzato la funzione bindParam() di PDO, che consente di filtrare automaticamente i dati da passare alla query prima che venga processata da PDO. Possiamo includere lo script in ciascuna pagina PHP che necessita di connessione al database tramite l’istruzione require_once(), come spiegato più avanti.
Aggiorna la tua password
Nelle righe 5 e 6 verifichiamo che le variabili contenute nell’array $_POST siano inizializzate tramite l’operatore di confronto null coalesce, introdotto con PHP 7. Tramite la Crazy Tower Casino login keyword AUTO_INCREMENT diciamo a MySQL che il campo id deve incrementarsi in maniera automatica dopo ogni inserimento.
Sorry, the comment form is closed at this time.