Sintesis Sosial
Security Engineering
DevSecOps & AI Coding

Checklist Keamanan Wajib Sebelum Meluncurkan Aplikasi Hasil Vibe Coding

🎯 Akar Masalah: Blind Trust pada AI-Generated Code
🧠 Vektor Utama: Client-Side Leaks & Broken Authorization
🔄 Solusi: Server Enforcement & Zero-Trust Baseline

Membangun aplikasi full-stack kini bisa diselesaikan dalam hitungan jam berkat AI coding agent (vibe coding). Namun, di balik UI yang tampak bekerja mulus, model LLM kerap memotong kompas keamanan: menaruh secret key di bundle frontend, mengabaikan otorisasi backend, hingga membiarkan database terbuka tanpa Row Level Security.

"34 SECURITY CHECKS sebelum LAUNCH APLIKASI VIBE CODING-MU. Masukkan ke ChatGPT atau Claude... Secret key jangan di frontend, cek riwayat git, pasang aturan akses database (RLS), user A gak boleh buka data user B, hingga batasi request & biaya API." — Dikutip dari thread @harys.space di Threads (Sintesis 17 Rekomendasi Inti Bagian 1)

1. Mengapa Aplikasi Vibe Coding Rentan Bocor?

LLM diprogram untuk memberikan output yang "segera jalan" (it just works). Ketika diminta mengintegrasikan database atau API berbayar (seperti OpenAI atau Supabase), AI sering kali mengambil jalur terpendek: menyertakan API key langsung di kode client, menyederhanakan query tanpa validasi hak akses, dan hanya menyembunyikan tombol UI alih-alih memvalidasi izin di server.

Akibatnya, penyerang tidak perlu membobol server—cukup membuka browser DevTools, membaca API key di bundel JavaScript, atau memanggil endpoint API langsung dengan ID milik user lain (BOLA/IDOR).

2. Ringkasan 17 Pilar Audit Keamanan Pre-Launch

1. Kunci Rahasia & Pengelolaan Environment

Secret Key Server-Only: Jangan pernah mengekspos API key berbayar di frontend. File .env tidak melindungi jika build tool mengikutsertakannya ke bundle client.
Audit Git History: Menghapus secret dari commit terbaru tidak membersihkan riwayat commit lama. Kunci yang pernah terekspos wajib di-revoke/rotasi segera.

2. Akses Database & BaaS (Supabase/Firebase)

Pisahkan Public Key vs Service Role: Kunci admin (service_role) membypass seluruh RLS dan hanya boleh berada di backend terpercaya.
Wajib Pasang Row Level Security (RLS): Login saja belum melindungi data. Setiap baris data harus diatur izin baca/tulisnya sesuai pemilik (UID) atau tenant.

3. Otentikasi & Otorisasi di Sisi Server

Validasi Server-Side: Menyembunyikan menu admin di UI bukan pembatasan akses. Backend wajib memverifikasi sesi, token, dan role di setiap request.
Cegah Akses Lintas Akun (BOLA/IDOR): Mengganti parameter ID pada request URL tidak boleh membuka record pengguna lain.
Mass Assignment Protection: Buat whitelist kolom yang boleh diperbarui via form. Cegah manipulasi role, balance, atau status langganan.

4. Proteksi Sesi, Kredensial & Input

Cookie Sesi Aman: Simpan auth token dalam cookie berbendera HttpOnly, Secure, SameSite untuk mencegah pencurian via XSS.
Hashing Modern: Gunakan Argargon2id atau bcrypt untuk password lokal, atau serahkan sepenuhnya pada managed auth provider.
Parameterized Queries & Output Escaping: Wajib gunakan prepared statements untuk SQL dan escaping konteks untuk menangkal serangan Injection dan XSS.

5. Anti-Abuse, Kuota & Penanganan Berkas

Rate Limiting & Bot Protection: Pasang pembatas request pada auth endpoint dan trigger AI mahal. Gunakan Cloudflare Turnstile pada form publik.
Hard Spending Caps: Atur limit tagihan yang benar-benar memutus pemakaian (bukan hanya email peringatan).
Validasi File Upload: Periksa tipe MIME / magic bytes sebenarnya, batasi ukuran, ubah nama file secara acak, dan simpan di storage bucket privat.

3. Landasan & Validasi Standar Industri Keamanan

✅ DIDUKUNG SAINS & STANDAR INDUSTRI

Broken Access Control & IDOR (#1 Risiko OWASP)

Berdasarkan OWASP Top 10:2021 (A01: Broken Access Control), kegagalan memvalidasi izin akses di sisi server adalah kerentanan web paling masif di dunia (ditemukan pada 94% aplikasi yang diuji). Prinsip deny-by-default dan verifikasi kepemilikan record di backend mutlak diperlukan.

📚 Referensi: OWASP Foundation (2021) — OWASP Top 10:2021 — A01 Broken Access Control.
🔗 Link Resmi: https://owasp.org/Top10/2021/A01_2021-Broken_Access_Control/
✅ DIDUKUNG SAINS & STANDAR INDUSTRI

AI Coding Pitfalls & Unbounded Consumption

Standar OWASP Top 10 for LLM Applications (LLM06: Excessive Agency & LLM10: Unbounded Consumption) menegaskan bahwa integrasi model AI rentan terhadap eksploitasi denial-of-wallet jika tidak dibatasi oleh rate-limiter, hard spending quota, dan sandboxing permission.

📚 Referensi: OWASP GenAI Security Project (2025/2026) — OWASP Top 10 for Large Language Model Applications.
🔗 Link Resmi: https://owasp.org/www-project-top-10-for-large-language-model-applications/
✅ DIDUKUNG SAINS & STANDAR INDUSTRI

Password Storage & Cryptographic Storage

Standar NIST Special Publication 800-63B (Digital Identity Guidelines) merekomendasikan fungsi derivasi kunci yang memory-hard seperti Argon2id atau PBKDF2/scrypt dengan salt kriptografis unik untuk mengamankan kredensial dari serangan brute-force GPU.

📚 Referensi: NIST Special Publication 800-63B — Authentication and Lifecycle Management: Securing Passwords.
🔗 Link Resmi: https://pages.nist.gov/800-63-3/sp800-63b.html

⚡ Actionable Playbook: 3 Langkah Audit Sebelum Klik Deploy

  1. Gitleaks & Secret Scan: Jalankan npx gitleaks detect --verbose di terminal repo untuk memastikan tidak ada API key yang terselip di source code atau git log.
  2. Dual-Account Multi-Tenant Test: Buat dua akun percobaan (User A dan User B). Coba request update/baca data User B menggunakan auth session User A melalui Postman/Curl. Wajib return 403 Forbidden.
  3. Hard Cap & Rate Limit Check: Set hard budget cap di dashboard provider (OpenAI/Anthropic/Resend) dan pastikan middleware rate-limiting aktif di router backend.