flawopen.com/xss/Php

● CWE-79 · Haute
Recherche · FlawOpen

Cross-Site Scripting in PHP

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in PHP. Side-by-side vulnerable vs secure code examples for htmlspecialchars(), Blade templates, and Twig escaping.

💡 Explication en Langage Simple (ELI5)

Imaginez coller une note sur le panneau d'affichage du hall disant : 'Toute personne lisant ceci doit donner son portefeuille à la personne à côté d'elle'. Si les visiteurs obéissaient aveuglément à chaque note punaisée, n'importe qui pourrait voler l'argent de tout le monde.

Concepts Clés et Termes

Web Application Security
Composant d'architecture clé affecté par CWE-79.
CWE-79
Classification standard Common Weakness Enumeration (CWE) pour xss-php.
Defense-in-Depth
Vérification d'ingénierie multicouche et isolation des limites à l'exécution.

Déroulement de l'Attaque Étape par Étape

Step 1

Injection de Payload Script Non Fiable

L'attaquant soumet des balises HTML ou des scripts JavaScript (ex. <script> ou <img onerror=...>) via des formulaires ou paramètres.

Step 2

Interpolation Sans Échappement Contextuel

L'application injecte l'entrée brute dans la réponse HTML sans encodage adéquat des entités HTML.

Step 3

Exécution dans le DOM du Navigateur

Lorsque la victime charge la page, son navigateur interprète le texte comme du code exécutable plutôt que du texte brut.

Step 4

Détournement de Session et Vol de Jetons

Le script malveillant s'exécute dans le contexte de la victime et vole les cookies d'authentification ou les jetons de session.

Code Source : Vulnérable vs Sécurisé

✕ IMPLÉMENTATION VULNÉRABLE
// $_GET value echoed with no encoding
echo "<div>Welcome, "
   . $_GET['name'] . "</div>";
✓ PATCH SÉCURISÉ ET ROBUSTE
// value HTML-encoded before output
echo "<div>Welcome, " . htmlspecialchars(
  $_GET['name'], ENT_QUOTES, 'UTF-8'
) . "</div>";

Liste de Contrôle de Sécurité pour l'Ingénierie

References