Rubrique PHP

Empêcher les failles XSS ou Cross Site Scripting en PHP grâce à une fonction antixss

Catégorie PHP

pirate-47705_640En 2007 j’avais trouvé sur le blog de l’excellent Korben un petite fonction pour empêcher les failles XSS ou Cross Site Scripting en PHP.
Hélas, depuis le temps, cette fonction comporte toujours une petite erreur (la fonction strip_tags renvoie une valeur de retour) qui n’a toujours pas été corrigée depuis. Ca fait jamais que 9 ans à l’heure ou j’écris ces lignes 😉

Voici donc la même fonction, légèrement corrigée.


function antixss($input) {
$new=strip_tags($input);
$new = htmlspecialchars($new, ENT_QUOTES);
return $new;
}

Et pour l’utiliser, voici un exemple avec le paramètre « name » passé avec la methode GET

$value = antixss($_GET["name"]);

ou la méthode POST

$value = antixss($_POST["name"]);

Petite explication pour ceux qui ignorent ce qu’est une faille XSS ou Cross Site Scripting: Il s’agit d’un méthode très utilisée par les hackers qui consiste simplement à faire exécuter du code dans une page web en l’injectant dans un formulaire ou une url.

Un exemple simple pour comprendre:
Admettons que vous ayez un formulaire sur votre site, par exemple un formulaire de contact. Si vous faites en sorte que le contenu des champs du formulaire s’affiche sur la page lors de sa validation (par exemple pour en confirmer les informations), et qu’un petit malin met du code javascript genre

<script>alert('coucou')</script>

Une fenêtre « Coucou » va s’afficher à l’écran!
Cet exemple est inoffensif, mais un hacker un peu chevronné peut facilement pirater une base de données grâce à cette méthode…

Alors protégez-vous bien!

2 thoughts on “Empêcher les failles XSS ou Cross Site Scripting en PHP grâce à une fonction antixss

  1. Legagneur Matthieu

    bonjour, il y a une erreur dans le code de la fonction, voila la correction :

    function antixss($input) {
    $new = strip_tags($input);
    $new = htmlspecialchars($new, ENT_QUOTES);
    return $new;
    }

    et si on veut faire plus compact et plus optimisé en mémoire :

    function antixss($input) {
    return htmlspecialchars(strip_tags($input), ENT_QUOTES);
    }

    Reply
    1. apocalx (Post author)

      C’est exact, petite inversion de variables (ou de lignes) qui fait que forcement, ça marchait pas 🙂
      Merci pour votre vigilance.

      Reply

Laissez un commentaire...

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

(obligatoire)