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
- Tulis tujuan dan acceptance criteria.
- Buat perubahan kecil yang dapat ditinjau.
- 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
- 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
Tambahkan pertahanan berlapis untuk penyalahgunaan, browser hardening, dan minimisasi data.