flawopen.com/xss/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.
Imagina clavar una nota en el tablón de anuncios del vecindario que diga: 'Quien lea esto, entregue su cartera a la persona que tiene al lado'. Si los vecinos obedecieran ciegamente cada cartel colgado, cualquiera que pusiera una nota podría robar el dinero de todos.
Web Application SecurityCWE-79.CWE-79Defense-in-DepthEl atacante inyecta etiquetas HTML o scripts (ej. <script> o <img onerror=...>) a través de formularios o parámetros URL.
La aplicación web refleja la entrada en el HTML de respuesta o la almacena sin codificación contextual de entidades HTML.
Cuando una víctima visita la página, su navegador interpreta los caracteres inyectados como instrucciones ejecutables.
El script inyectado accede a document.cookie, tokens en almacenamiento local y envía solicitudes autenticadas en nombre de la víctima.
// format! has no HTML awareness
let body = format!(
"<div>Welcome, {}</div>", name
);
// Askama auto-escapes .html templates
#[derive(Template)]
#[template(path = "welcome.html")]
struct Welcome<'a> { name: &'a str }
// welcome.html: <div>Welcome, {{ name }}</div>