Nettoyer vos entrées non sécurisées en sortie

Il est bien connu, que toutes les entrées non sécurisées (en particulier les entrées utilisateur, à partir de formulaires) doivent être nettoyées avant leurs sorties.
Exemple classique:

.01
.02
.03
.04
 
<?php
echo $_GET['username'];
?>


Peut par exemple donner en sortie:
.01
.02
 
<script>/*snoop cookie change admin password script php*/</script>

Il s'agit là d'un risque bien apparent pour la sécurité de ne pas nettoyées les données douteuses avant leur sortie. De plus, vous pouvez vous retrouver avec des pages en grand désordre si vous n'enchaînez pas les entrées utilisateur de la bonne façon.

Comment faire pour résoudre ce problème:
En principe, vous devez convertir < , >, ' et " en leurs propres entités (< , > ' , et ") .
Avec les fonctions htmlspecialchars et htmlentities qui font ce travail de nettoyage.

Voici la bonne façon de faire:
.01
.02
.03
.04
 
<?php
echo htmlspecialchars($_GET['username'], ENT_QUOTES);
?>