Membangun security regression test — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 24 DARI 28

Membangun security regression test

Ubah bug keamanan menjadi test permanen agar tidak kembali pada perubahan berikutnya.

Tujuan pembelajaran

  • Menulis test reproduksi.
  • Memastikan test gagal sebelum fix.
  • Menguji status, body, state, dan cleanup.

Konsep utama

Regression seam

Test sedekat mungkin dengan boundary yang rusak.

State assertion

HTTP 403 saja belum cukup jika database sudah telanjur berubah.

Alur kerja teknis

  1. Tulis tujuan dan acceptance criteria.
  2. Buat perubahan kecil yang dapat ditinjau.
  3. Jalankan test dan baca diff sebelum menerima hasil AI.

Contoh implementasi

Authorization regression test

const response = await fetch("http://localhost:3000/admin/posts/1", {
  method: "DELETE",
  headers: { "Cookie": "session=learner-fixture" }
});
if (response.status !== 403) throw new Error("Learner tidak boleh menghapus post");

CSRF regression assertion

ob_start();
http_response_code(200);
// panggil handler dengan token invalid pada test harness
// assert status 419 dan mutation tidak terjadi
assert(http_response_code() === 419);
ob_end_clean();

Aspek keamanan

  • Periksa tidak ada side effect setelah request ditolak.
  • Gunakan fixture test-only.
  • Jangan mencetak credential fixture.

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

  1. Jalankan contoh dengan input normal.
  2. Ulangi dengan input kosong, tipe salah, dan nilai batas.
  3. Pastikan error tidak membocorkan secret atau detail internal.

Latihan

  1. Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
  2. 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

Ubah bug keamanan menjadi test permanen agar tidak kembali pada perubahan berikutnya.