Accueil » Tutoriels » Se protéger de la faille XSS (Cross-site scripting)

Introduction : Qu’est-ce que la faille XSS

XSS vient de Cross-Site Scripting et comme l’acronyme CSS était déjà pris pour Cascading Style Sheets, on a utilisé un X pour « cross » (croix en anglais).

La faille consiste à injecter un script arbitraire dans une page pour provoquer une action bien définie. Les autres utilisateurs exécutent le script sans s’en rendre compte dès l’ouverture de la page.

Cross veut également dire traverser, car l’un des buts de la faille est d’exécuter un script permettant de transmettre des données depuis un site vers un autre.

Ce problème se situe principalement au niveau des cookies, car on peut par exemple récupérer les cookies d’un site A depuis un site B. On peut ainsi récupérer les cookies de n’importe qui, même de l’administrateur d’un site.

Notez par ailleurs qu’on peut exploiter la faille XSS en JavaScript mais aussi avec d’autres langages.

 

Que peut-on faire avec une faille XSS ?

On distingue deux types de failles XSS:

1) XSS permanent

C’est lorsque le script est stocké sur le serveur externe (base de données). Il est donc récupéré et exécuté à tous moments sur le site par n’importe quel utilisateur.

2) XSS non permanent

Le script est souvent intégré à une URL et est exécuté sans être stocké sur un serveur.

On peut distinguer plusieurs possibilités non exhaustives d’exploitation de cette faille :

  • Une redirection de la page afin de nuire aux utilisateurs ou pour tenter une attaque de phishing.
  • Voler des sessions ou des cookies. (Donc se faire passer pour un autre utilisateur pour exécuter des actions)
  • Rendre le site inaccessible en utilisant des alertes en boucle ou tout autre moyen nuisible.

 

Comment savoir si mon site est faillible ?

Lorsque vous transmettez des données (commentaires, posts d’articles, recherche d’un terme etc) via votre site, si un script transmis comme:

<script type="text/javascript">alert('test');</script>

s’exécute, c’est-à-dire que si la boite de dialogue « test » apparait, votre site est faillible.

 

Exemple d’exploitation de faille XSS

Le premier ver XSS appellé Samy s’est propagé sur myspace en 2005. Tous les utilisateurs qui visitaient une page spécifique re-propageaient à leur tour le ver.

Les explications entières sur le fonctionnement sont disponibles sur le site de Samy si vous souhaitez en apprendre plus.

Je ne peux pas citer toutes les possibilités, mais sachez que ça m’est arrivé de voir des failles XSS dans les pseudos des membres. L’administrateur se basait seulement sur un code JavaScript qui vérifiait si le pseudo contenait uniquement des lettres et chiffres, mais ne vérifiait pas du côté serveur.

 

Comment s’en prémunir

Il faut absolument utiliser les fonctions php htmlspecialchars() qui filtre les ‘<‘ et ‘>’ ou htmlentities() qui filtre toutes les entités html.

Ces fonctions doivent être utilisées sur des entrées utilisateurs qui s’afficheront plus tard sur votre site. Si elle ne sont pas filtrées, les scripts comme ceux que nous avons vus plus haut s’exécuteront avec tout le mal qui s’en suit.

Voici un exemple d’utilisation de cette fonction :

<?php echo htmlspecialchars($_POST['nom']); // echo affiche les données sur un page, du coup on protège l'affichage avec la fonction htmlspecialchars?>

Au possible, il faut placer des cookies avec le paramètre HttpOnly, empêchant leur récupération avec JavaScript (Attention elle n’est pas forcément supportée par tous les navigateurs).

5 Commentaires

  1. Salut ca va,
    est ce que je peux avoir le fichier (vol.php) plzzzz
    ca fait longe-temp que je cherche

  2. alert(‘test’);

Laisser un commentaire

Lire plus :
sécuriser Wordpress
Sécuriser WordPress en 5 étapes

Comment Sécuriser Wordpress WordPress est actuellement le système de gestion de contenu (CMS pour Content Management System en anglais) le...

Fermer