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.
Bayangkan menempelkan catatan pada papan pengumuman umum yang bertuliskan: 'Siapa pun yang membaca ini, serahkan dompet Anda kepada orang di sebelah Anda'. Jika setiap pengunjung secara buta mematuhi catatan tersebut, pelaku dapat mencuri uang semua orang.
Web Application SecurityCWE-79.CWE-79Defense-in-DepthPenyerang menyisipkan tag HTML atau kode JavaScript (misal: <script> atau <img onerror=...>) ke dalam formulir atau URL.
Aplikasi menampilkan input langsung ke halaman HTML tanpa pengkodean entitas HTML sesuai konteks.
Saat korban mengunjungi halaman, browser menafsirkan karakter yang disuntikkan sebagai kode yang dapat dieksekusi.
Skrip berjalan dalam konteks kredensial korban, mencuri cookie autentikasi dan token penyimpanan lokal.
// 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>