Page 185 - Corso di PHP - Livello base
P. 185
funzione md5 di PHP riceve come parametro semplicemente la
stringa da criptare e la documentazione ufficiale si trova qui:
http://it.php.net/manual/en/function.md5.php.
Questo è solo uno dei tanti modi per criptare una password:
parliamo di questo perché è il più semplice da utilizzare, ma
c'è chi usa anche sistemi più sofisticati. Il nostro codice
pertanto dovrà presentarsi in questa forma:
$query = "SELECT * FROM autori WHERE Nickname = '{$_POST['nickname']}' AND
Password = '". md5($_POST['psw']). "'";
Dove i punti che separano md5($_POST['psw']) dal resto del
codice sono un modo per concatenare valori all'interno di una
variabile (le virgole non funzionano).
In questo caso ci salviamo dal malintenzionato che immette i
dati di cui sopra, ma siamo ancora vulnerabili. Questo perché
l'hacker potrebbe scrivere nella casella del nickname questa
stringa cattivissima:
Federico' --
Dove dopo i due trattini c'è uno spazio. E magari può anche
lasciare in bianco il campo della password. In tal modo la query
diventerebbe questa:
$query = "SELECT * FROM autori WHERE Nickname = 'Federico' -- AND Password =
''";
I due trattini nel linguaggio SQL indicano i commenti: pertanto
tutto ciò che viene dopo i due trattini sarà ignorato. Capite
quindi la pericolosità della cosa malgrado il controllo tramite
algoritmo md5. Sarà un giochetto per il malintenzionato riuscire
a entrare nel sito e magari a carpire tutta la lista degli utenti
registrati o a far di peggio: pensate se potesse entrare con
185