Rate limiting, security headers, dan privacy by design — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 16 DARI 28

Rate limiting, security headers, dan privacy by design

Tambahkan pertahanan berlapis untuk penyalahgunaan, browser hardening, dan minimisasi data.

Tujuan pembelajaran

  • Mendesain rate limit per aksi/identity.
  • Memilih security headers relevan.
  • Mengurangi data yang disimpan.

Konsep utama

Rate limit

Gunakan bucket dan TTL; jangan hanya throttle UI.

Headers

CSP, frame-ancestors, nosniff, referrer policy, dan HSTS memiliki tujuan berbeda.

Privacy

Jangan menyimpan raw IP atau payload jika tidak diperlukan.

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

Header dasar Express

app.use((req, res, next) => {
  res.setHeader("X-Content-Type-Options", "nosniff");
  res.setHeader("Referrer-Policy", "strict-origin-when-cross-origin");
  res.setHeader("Content-Security-Policy", "default-src 'self'; frame-ancestors 'none'");
  next();
});

Cek header HTTP

curl -sSI https://example.test | grep -Ei "content-security-policy|x-content-type-options|referrer-policy"

Aspek keamanan

  • Rate-limit key harus menjaga privasi dan tidak mudah dipalsukan.
  • Uji header pada response nyata, bukan hanya konfigurasi.
  • Dokumentasikan retention dan cleanup data.

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

Tambahkan pertahanan berlapis untuk penyalahgunaan, browser hardening, dan minimisasi data.