flawopen.com/xss/Ruby

● CWE-79 · Tinggi
Riset Keamanan · FlawOpen

Cross-Site Scripting in Ruby

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Ruby. Side-by-side vulnerable vs secure code examples for Rails ERB, raw() vs sanitize(), and safe_join.

💡 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-ruby.
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
<%# html_safe skips escaping &%>
<div>
  <%= @comment.body.html_safe %>
</div>
✓ PERBAIKAN AMAN & KUAT
<%# ERB output auto-escapes by default &%>
<div>
  <%= @comment.body %>
</div>

Daftar Periksa Penguatan Sistem Rekayasa

References