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

Il  secondo  problema  di  vulnerabilità  che  vediamo  in  questo
                capitolo  è  la  cosiddetta  SQL  Injection  (iniezione  di  SQL).

                Anche in questo caso l'attacco prende di mira form scritti male
                per eseguire un codice SQL malevolo, e adesso vedremo nel

                dettaglio  in  cosa  consiste  questa  pratica  e  perché  è  tanto
                pericolosa.  Prendiamo  per  esempio  questo  semplice  form  per
                connettersi a un sito:

                 <form action="login.php?step=2" method="post">

                 Nickname:<br />
                 <input type="text" name="nickname" /><br />
                 Password: <br />

                 <input type="password" name="psw" /><br />
                 <input type="submit" name="invia" value="Invia!" /><br />

                 </form>

                In questo caso il nostro form, invece di rimandare a una nuova

                pagina, rimanda alla stessa ma con l'aggiunta della query string
                ?step=2,  in  modo  da  scrivere  tutto  nella  stessa  pagina.

                L'azione del form andrà quindi scritta in un blocco if di questo
                tipo:


                 if (isset($_GET['step']) && $_GET['step'] == 2)

                 {
                    // azione
                 }

                 else
                 {

                 }

                Ipotizziamo anche che il gestore del sito o del blog sia stato così

                sprovveduto  da  aver  fatto  in  modo  che  le  password  vengano
                inserite  in  chiaro  nel  database  (quindi  senza  criptarle

                attraverso  il  form  di  registrazione).  Ora  prendiamo  il  pessimo
                script che esegue il controllo sui dati immessi dall'utente:





                                                          182
   177   178   179   180   181   182   183   184   185   186   187