DY

DelahayeYourself

modules / S1103 /

TP17: PHP & la sécurité 2

Ce TP n’a pas pour but de faire de vous des experts en sécurité, le sujet est aussi vaste que complexe et couvre plus de domaines que le cadre de ce module. Néanmoins j’espère par ce TP vous sensibiliser à ce sujet.

La faille XSS

Reprenons le formulaire suivant :

<form action="" method="POST">
    <input type="text" name="name" />
    <input type="submit" value="Send" />
</form>

Avec le traitement PHP suivant:

<?php 
    if isset($_POST){
        if isset($_POST['name']){
            echo $_POST['name'];
        }
    }

Lancer le formulaire dans un navigateur mais au lieu de saisir votre nom saissisez cela:

<script>alert('Plop');</script> 

Soumettez votre formulaire et vous constaterez qu'une popup est apparue. Effectivement nous venons de passer du code javascript à notre formulaire, ce code n'a pas été interprété par PHP mais par notre navigateur. Dans le cas présent seulement une popup s'est affichée mais nous aurions pu causer plus de dégâts.

Éviter la faille XSS en échappant le HTML

Pour échapper le code HTML, il suffit d'utiliser la fonction htmlspecialchars qui va transformer les chevrons des balises HTML<> en < et >. Cela provoquera l'affichage de la balise plutôt que son exécution.

Il est également possible de retirer les balises HTML avec la fonction strip_tags. En résumé ne faites jamais confiance aux informations transmises par l'utilisateur.

Pour finir corrigez le traitement du formulaire pour éliminer la faille XSS de celui-ci.