flawopen.com/xss/Rust

● CWE-79 · Tinggi
Riset Keamanan · 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.

💡 Penjelasan Sederhana (ELI5)

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.

Konsep Kunci & Istilah

Web Application Security
Komponen arsitektur utama yang terpengaruh oleh CWE-79.
CWE-79
Klasifikasi standar Common Weakness Enumeration (CWE) untuk xss-rust.
Defense-in-Depth
Verifikasi rekayasa berlapis dan isolasi batas waktu proses (runtime).

Alur Serangan Langkah demi Langkah

Step 1

Penyuntikan Payload Skrip Berbahaya

Penyerang menyisipkan tag HTML atau kode JavaScript (misal: <script> atau <img onerror=...>) ke dalam formulir atau URL.

Step 2

Penyajian DOM Tanpa Pelolosan (Escape)

Aplikasi menampilkan input langsung ke halaman HTML tanpa pengkodean entitas HTML sesuai konteks.

Step 3

Parsing & Eksekusi DOM di Peramban Korban

Saat korban mengunjungi halaman, browser menafsirkan karakter yang disuntikkan sebagai kode yang dapat dieksekusi.

Step 4

Pembajakan Sesi & Pencurian Token Akses

Skrip berjalan dalam konteks kredensial korban, mencuri cookie autentikasi dan token penyimpanan lokal.

Kode Sumber: Rentan vs Aman

✕ IMPLEMENTASI RENTAN
// format! has no HTML awareness
let body = format!(
  "<div>Welcome, {}</div>", name
);
✓ PERBAIKAN AMAN & KUAT
// Askama auto-escapes .html templates
#[derive(Template)]
#[template(path = "welcome.html")]
struct Welcome<'a> { name: &'a str }
// welcome.html: <div>Welcome, {{ name }}</div>

Daftar Periksa Penguatan Sistem Rekayasa

References