Login basati su cookie con PHP

5 febbraio 2010

La gestione degli accessi, tramite login, è uno degli aspetti fondamentali quando si vuol realizzare un portale web. I punti nodali in cui inserire un sistema di login sono generalmente l’accesso all’area amministrativa del portale e l’accesso da parte degli utenti ad aree riservate del sito. In entrambi i casi bisogna porre molta attenzione alla sicurezza degli accessi.

Per procedere abbiamo bisogno del supporto di un database, per questo esempio ho scelto il MySQL.

Il file con il codice dell’esempio trattato nell’articolo è scaricabile dal link download in alto in questa pagina.

Il database

Il primo passo per la realizzazione di un sistema di login efficace è la creazione di una tabella, nel database, per la gestione degli utenti. Indifferentemente dal tipo di database utilizzato (es. MySQL, MS SQL, ecc.) è importante definire alcuni campi fondamentali per la gestione degli utenti.

Fondamentali sono sicuramente i campi username e password, necessari per l’accesso, ma è anche importante il campo e-mail, necessario sia ai fini della registrazione sia in caso di smarrimento della password. Volendo potremmo fermarci qui, ma per una maggiore sicurezza aggiungeremo altri due campi, stato e codUtente, il primo con lo scopo di distinguere tra utenti attivi e inattivi e l’altro indicherà un codice criptato legato all’utente.

CREATE TABLE IF NOT EXISTS `utenti` (
  `idUtente` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `codUtente` varchar(32) NOT NULL,
  `username` varchar(30) NOT NULL,
  `password` varchar(32) NOT NULL,
  `email` varchar(50) NOT NULL,
  `stato` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`idUtente`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;  

Sopra lo script MySQL necessario a creare la tabella utenti.

La sicurezza del login

È importantissimo offrire ai nostri utenti un sistema di login sicuro, il che significa criptare la password a livello del database, gestire i cookie (o eventualmente le sessioni) con un codice identificativo dell’utente, anch’esso criptato. Obbligare gli utenti a inserire password lunghe almeno otto caratteri serve a rendere più complicato il furto dell’account.

Nello specifico, è importante criptare la password a livello di database, al fine di non permettere, neanche a chi può accedere al database, di leggere i dati d’accesso di un utente, a tal fine consiglio di utilizzare la funzione PHP md5($string) che restituisce un valore criptato a 32 bit non reversibile, ma con risultato fisso, il che significa che se passiamo il valore “casa” all’interno della funzione md5 quest’ultima restituirà sempre lo stesso valore criptato (202447d5d44ce12531f7207cb33b6bf7).

Un altro campo da criptare è codUtente, che procederemo sempre tramite la funzione md5, passando come valore l’indirizzo e-mail considerandolo come univoco e legato al singolo account.

Passiamo, nella prossima pagina, alla programmazione PHP.

Se vuoi aggiornamenti su Login basati su cookie con PHP inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Login basati su cookie con PHP

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing