Page 186 - Corso di PHP - Livello base
P. 186

l'account dell'amministratore.


                Qual è pertanto il modo più sicuro per difendersi da questo tipo
                di attacco? Non dovremo far altro che aggiungere una funzione

                per  controllare  i  dati  immessi  dall'utente,  e  si  tratta  della
                funzione  mysql_real_escape_string,  che  inserisce  i  giusti
                caratteri di escape prima dei caratteri “pericolosi”. Riceve come

                parametro semplicemente la stringa a cui aggiungere i parametri
                di escape. Quindi la stringa della nostra query dovrà assumere

                questa forma per evitare attacchi:


                 $query = "SELECT * FROM autori WHERE Nickname = '".
                 mysql_real_escape_string($_POST['nickname']) ."' AND Password = '".
                 mysql_real_escape_string($_POST['psw']). "'";


                Riusciremo  così  a  rendere  inoffensivo  l'attacco  del

                malintenzionato,  perché  l'ultima  stringa  che  abbiamo  visto
                risulterà invece in questo modo:


                $query  =  "SELECT  *  FROM  autori  WHERE  Nickname  =
                'Federico\' -- AND Password =

                ''";


                Questa funzione va utilizzata solo nel caso in cui magic quotes
                gpc sia disattivo. Per essere però del tutto sicuri utilizziamo la

                funzione          get_magic_quotes_gpc,                  che        controlla         la
                configurazione  delle  magic  quotes  (non  riceve  alcunché  come
                parametro) e utilizzarla in un ciclo if:



                 if(get_magic_quotes_gpc())
                 {
                    $query = "SELECT * FROM autori WHERE Nickname = '". $_POST['nickname'] ."' AND
                 Password = '". $_POST['psw']. "'";

                 }
                 else

                 {


                                                          186
   181   182   183   184   185   186   187   188   189   190   191