È prassi consolidata che le password in chiaro non vengano mai memorizzate, ma, al loro posto, venga memorizzata la loro "firma" (one way hash) ricavata tramite una funzione di digest, tipo MD5 o SHA1.
La logica sottostante è che è computazionalmente veloce ricavare dalla password in chiaro la firma, ma computazionalmente "impossibile" il verso opposto, poiché l'inversione dell'algoritmo di firma è "matematicamente complicatissima" e quindi estremamente laboriosa e lunga da compiersi nonché (last but not least) con perdita di informazione.
Ciò che viene confrontata è quindi la firma della password scelta dall'utente (salvata, lo ripeto, su database) e la firma di quella digitata. Se queste coincidono, ciò vuol dire con elevatissima probabilità (certezza, salvo collisioni) che anche le password in chiaro coincidono, dato che la lunghezza della firma finale è in genere grande.
È inteso che, con questo sistema, se un utente smarrisce la password, ad egli ne dovrà essere inviata una nuova: quella vecchia è persa per sempre.
Come è inteso che, se la password è debole, può essere possibile (e lo è!) che con un attacco di brute force si riesca ad ottenere la password in chiaro, a partire dalla sua firma, appunto per "tentativi ed errori", "scavalcando" in toto il problema dell'inversione dell'algoritmo.
Esaminiamo alcuni punti riguardo il codice di autenticazione ed inizializzazione/propagazione della sessione poco sopra riportato.
Rispettivamente, seguono alcune debolezze dello schema adottato.
Sessioni PHP: cosa sono, come si usanoDalla configurazione di PHP, alla gestione delle sessioni in un... |
Continuous Integration: automatizziamo i client con PhingContinuous Integration: automatizziamo i client con Phing. Esempi... |
Archiviazione delle applicazioni PHP con PharCome incorporare intere applicazioni PHP all'interno di un singolo... |
I traits in PHP 5.4Cosa sono, a cosa servono e come si unsano i traits, la novità per... |
PHP 5.4: il web server integratoImpara ad usare il web server integrato nella versione 5.4 di PHP:... |
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |