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

?>

                Bene, questo è un codice del tutto insicuro perché non ci sono

                controlli  di  sicurezza.  Nel  campo  “messaggio”  l'hacker  può
                facilmente inserire un codice JavaScript di questo tipo:


                 <script language="text/javascript">document.location.href="http://www.losnaweb.com";
                 </script>


                Dove  ovviamente  al  posto  di  losnaweb.com  c'è  un  sito
                malvagio.  Attraverso  la  stampa  con  echo,  il  codice  viene

                inserito nella pagina xss.php e quindi eseguito. E ovviamente,
                date  le  tante  cose  che  si  possono  fare  con  JavaScript,  il

                reindirizzamento non è che una possibilità: il malintenzionato
                può  infatti  anche  installare  script  dannosi  direttamente

                all'interno del sito. E questo tipo di attacco funziona sia che il
                nostro  form  abbia  metodo  get,  sia  che  abbia  metodo  post.
                Tipicamente,  gli  script  XSS  vengono  utilizzati  per  rubare

                cookie ai malcapitati.


                Difendersi  da  questo  tipo  di  attacchi  è  veramente  molto
                semplice: bisogna solo tenerlo a mente! Basterà fare in modo
                che  i  caratteri  riservati  del  linguaggio  HTML    vengano

                sostituiti  con  le  relative  entità  (per  esempio  la  parentesi
                uncinata aperta con <) o che le etichette HTML vengano del

                tutto cancellate.


                Per  fare  questo  abbiamo  tre  funzioni:  htmlspecialchars,
                htmlentities e strip_tags. Funzionano  tutte  allo  stesso  modo:

                ricevono  come  parametro  la  stringa  per  la  quale  dobbiamo
                sostituire  i  caratteri.  Ecco  quindi  qual  è  il  codice  corretto  e
                sicuro da utilizzare nella pagina xss.php:



                 <?php





                                                          180
   175   176   177   178   179   180   181   182   183   184   185