MATERI 14 DARI 28
CSRF dan XSS: dua ancaman yang sering tertukar
Pahami perbedaan request palsu lintas situs dan script tak dipercaya, serta mitigasinya.
Tujuan pembelajaran
- Menggunakan token CSRF pada mutation.
- Encode output dan sanitasi rich text.
- Memahami peran SameSite dan CSP.
Konsep utama
CSRF
Browser korban membawa cookie sah ke request yang tidak diinginkan.
XSS
Data tidak dipercaya dieksekusi sebagai HTML/JavaScript dalam origin aplikasi.
Alur kerja teknis
- Tulis tujuan dan acceptance criteria.
- Buat perubahan kecil yang dapat ditinjau.
- Jalankan test dan baca diff sebelum menerima hasil AI.
Contoh implementasi
Validasi token CSRF
if (!is_string($_POST['csrf'] ?? null) || !hash_equals($_SESSION['csrf'], $_POST['csrf'])) {
http_response_code(419);
exit('Sesi formulir kedaluwarsa');
}Render teks dengan aman
const li = document.createElement("li");
li.textContent = comment.body;
document.querySelector("#comments").append(li);Aspek keamanan
- Mutation harus POST/PUT/DELETE dan memvalidasi CSRF.
- Jangan menganggap CSP menggantikan encoding.
- Sanitizer HTML harus allowlist tag/atribut dan diuji dengan payload hostile.
Kesalahan umum
- Menerima kode AI tanpa membaca diff dan memahami alur data.
- Menguji hanya happy path dan mengabaikan input salah atau batas nilai.
- Menyimpan secret, token, atau data nyata di prompt dan source code.
Pengujian dan verifikasi
- Jalankan contoh dengan input normal.
- Ulangi dengan input kosong, tipe salah, dan nilai batas.
- Pastikan error tidak membocorkan secret atau detail internal.
Latihan
- Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
- Tambahkan satu negative test lalu jelaskan risiko yang dicegah.
Checklist
- Tujuan dan batas pekerjaan jelas.
- Input divalidasi di server.
- Secret tidak berada di source/prompt.
- Test lulus dan diff sudah dibaca.
Rangkuman
Pahami perbedaan request palsu lintas situs dan script tak dipercaya, serta mitigasinya.