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