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
   180   181   182   183   184   185   186   187   188   189   190