flawopen.com/xss/Rust

● CWE-79 · Haute
Recherche · FlawOpen

Cross-Site Scripting in Rust

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Rust. Side-by-side vulnerable vs secure code examples for Askama, Tera auto-escaping, and Actix-web HTML rendering.

💡 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-rust.
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
// format! has no HTML awareness
let body = format!(
  "<div>Welcome, {}</div>", name
);
✓ PATCH SÉCURISÉ ET ROBUSTE
// Askama auto-escapes .html templates
#[derive(Template)]
#[template(path = "welcome.html")]
struct Welcome<'a> { name: &'a str }
// welcome.html: <div>Welcome, {{ name }}</div>

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

References