← Back to Home
DATABASE · SECURITY

Firebase Rules Allow All: Bahaya dan Cara Menutupnya

3 November 2026 · 5 min read · AISG Editorial

Ada satu baris di Firebase yang paling sering menyelamatkan demo dan paling sering merusak produksi: allow read, write: if true;. Artinya sederhana. Siapa pun, termasuk orang tanpa akun, boleh membaca dan menulis ke database Anda. Tidak ada pemeriksaan identitas. Tidak ada pembatasan field. Selama proyek aktif dan konfigurasi klien tersedia di aplikasi, pintunya terbuka.

Pola firebase rules allow all bukan bug mesin. Firebase menjalankan apa pun yang Anda tulis. Justru karena itu, aturan longgar jarang terdeteksi: aplikasi berjalan normal, tidak ada error, tidak ada log merah, dan semua fitur terasa lancar. Kerusakannya baru terlihat saat ada orang lain yang memanfaatkannya.

Artikel ini membahas kenapa aturan longgar mudah tertinggal, cara menguji sendiri apakah proyek Anda sudah terbuka, pola aturan berbasis pemilik dokumen, dan batas pengujian manual maupun emulator.

Apa yang sebenarnya dibuka oleh allow all

Firebase punya beberapa produk dengan bahasa aturan berbeda, tetapi makna longgarnya sama:

Dalam ketiga kasus, yang bocor bukan hanya data. Yang bocor adalah kewenangan. Penyerang tidak perlu memahami aplikasi Anda; cukup memanggil endpoint yang sama seperti aplikasi Anda lakukan.

Kenapa aturan longgar mudah tertinggal

Ada beberapa jalur yang berulang:

Hasil akhirnya sama: aturan longgar adalah utang keamanan yang menumpuk diam-diam, dan bunganya dibayar saat insiden terjadi.

Cara menguji sendiri dalam waktu singkat

Uji hanya proyek milik Anda atau proyek yang Anda punya izin tertulis untuk diuji. Langkahnya:

  1. Ambil konfigurasi klien (misalnya apiKey dan projectId) dari bundle aplikasi Anda sendiri. Nilai ini memang dirancang publik.
  2. Kirim permintaan baca ke endpoint Firestore tanpa header autentikasi. Jika dokumen kembali, artinya akses publik terbuka.
  3. Ulangi dengan sesi anonim bila Anonymous Auth aktif. Banyak aturan longgar hanya menguji request.auth != null, sehingga akun anonim pun lolos.
  4. Pada Realtime Database, coba akses ke URL database dengan akhiran .json tanpa token.
  5. Pada Storage, coba unduh objek dan coba daftar objek di sebuah prefix.
  6. Catat setiap respons: status, isi, dan apakah operasi tulis berhasil.

Jangan mengandalkan asumsi "karena aplikasi saya butuh login, pasti rules-nya sudah aman". Login di aplikasi dan izin di database adalah dua lapisan berbeda. Yang menentukan adalah aturan yang dievaluasi server Firebase, bukan tombol yang disembunyikan di UI.

Pola aturan berbasis pemilik dokumen

Untuk sebagian besar aplikasi, aturan yang cukup adalah menolak secara default lalu membuka sesuai kebutuhan. Contoh untuk Firestore dengan dokumen yang menyimpan ownerId:

match /orders/{docId} { allow read: if request.auth != null && resource.data.ownerId == request.auth.uid; allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid; allow update, delete: if false; }

Beberapa hal yang perlu diperhatikan:

Aturan yang baik juga harus tetap bisa dibaca manusia enam bulan kemudian. Beri komentar singkat pada setiap blok.

Cara memeriksa apakah proyek Anda sudah terbuka

Sebelum menguji, lakukan audit cepat dari dalam konsol:

AISG dapat membantu memberi indikasi awal. Sensor AISG berjalan lokal di mesin pengguna dan hasilnya adalah temuan yang perlu divalidasi manusia, bukan bukti eksploitasi. Untuk mencoba pemeriksaan awal, tersedia free URL scan tanpa akun di /#free-scan.

Batas pengujian manual dan emulator

Emulator Firebase sangat berguna, tetapi ia menjalankan aturan yang Anda muat ke dalamnya. Jika emulator memakai file aturan yang longgar, pengujian akan lolos dan produksi tetap terbuka. Pastikan file aturan yang diuji sama dengan yang di-deploy.

Rules Playground juga terbatas. Ia mengevaluasi satu permintaan dengan konteks yang Anda isi sendiri, tanpa data nyata dan tanpa melihat seluruh koleksi. Padahal kebocoran sering muncul dari subkoleksi yang terlupakan, koleksi lama yang tidak dipakai UI, atau aturan yang tumpang tindih.

Pengujian manual juga bergantung pada ingatan: siapa yang ingat menguji jalur anonim, jalur tulis, dan jalur daftar objek? Karena itu, jadikan pengujian aturan sebagai bagian dari alur rilis, bukan kegiatan sekali jalan. Setiap kali aturan berubah, ulangi skenario tanpa autentikasi, skenario pengguna biasa, dan skenario pengguna yang mencoba mengakses data orang lain.

Kesimpulan

Firebase tidak akan menolak aturan longgar. Ia hanya menjalankannya. Karena itu, firebase rules allow all harus diperlakukan sebagai temuan yang serius, bukan detail konfigurasi. Perbaikannya tidak mahal: mulai dari menolak default, buka per operasi, verifikasi kepemilikan di sisi server, dan uji jalur tanpa autentikasi setiap kali aturan berubah.

Alat otomatis, termasuk pemindaian AISG, hanya memberi indikasi. Keputusan akhir tetap ada di tangan Anda: baca aturan yang benar-benar berjalan di produksi, uji dengan klien nyata, dan pastikan setiap koleksi punya pemilik yang jelas.

Bacaan lanjutan: RLS Supabase: aplikasi bocor data tanpa error · apakah Supabase aman untuk produksi. Mau memeriksa aplikasi sendiri? free URL scan — tanpa akun.
Firebase Rules Database Pengujian
-->
Tag1 Tag2 Tag3

Start with the first step.

Start free on Community — local scan, no credit card.

Start Scanning
Early access: AISG is currently in early-access mode — the Community plan is free to start. Scans must be performed only against targets you are authorized to assess — results are indicative and require human review (see Trust & Legal).