Buka konsol
Coba Cloud Firestore: Lihat database yang skalabel dan fleksibel dari Firebase dan Google Cloud Platform. Pelajari Cloud Firestore lebih lanjut.

Mengatasi Ketidakamanan

Jika menerima peringatan bahwa Firebase Realtime Database Anda tidak aman, Anda dapat mengatasinya dengan mengubah dan menguji Aturan Realtime Database. Gunakan panduan ini untuk memeriksa Aturan Realtime Database Anda, memahami potensi ketidakamanan, dan menguji perubahan sebelum diterapkan.

Meninjau Aturan Realtime Database

Untuk melihat Aturan Realtime Database yang ada, buka tab Aturan di Firebase console.

Memahami Aturan Realtime Database

Aturan Realtime Database menjauhkan data Anda dari pengguna yang berniat jahat. Meskipun merupakan hal umum untuk memulai pengembangan dengan aturan terbuka yang memungkinkan akses baca dan tulis bagi semua pengguna, Anda harus mengonfigurasi aturan untuk melindungi data sebelum diterapkan ke aplikasi. Saat mengonfigurasi aturan, gunakan Simulator untuk menguji berbagai aturan.

Jika Anda baru menggunakan Aturan Realtime Database, pelajari lebih lanjut cara kerjanya di artikel Memulai dengan Aturan Database.

Mengatasi ketidakamanan yang sering terjadi

Aturan Realtime Database yang Anda siapkan secara default atau yang pertama kali Anda siapkan saat mengembangkan aplikasi dengan Realtime Database mungkin bukan aturan terbaik untuk aplikasi yang digunakan. Lihat masalah umum berikut dan pemecahan yang dapat dilakukan.

Akses terbuka

Ketika menyiapkan Realtime Database, Anda mungkin telah menetapkan aturan untuk mengizinkan akses terbuka selama pengembangan. Jika Anda adalah satu-satunya pengguna yang memiliki akses ke database, Anda mungkin menganggap bahwa ini situasi yang aman, tetapi begitu Anda menerapkan aplikasi dan tidak mengautentikasi pengguna, data akan rentan terhadap pengguna jahat.

Tidak direkomendasikan: Akses baca dan tulis untuk semua pengguna

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Solusi: Aturan yang membatasi akses baca dan tulis Buat aturan yang logis untuk hierarki data Anda. Salah satu solusi yang umum untuk ketidakamanan ini adalah keamanan berbasis pengguna dengan Firebase Authentication. Pelajari lebih lanjut di Keamanan Berbasis Pengguna.

Akses untuk setiap pengguna yang diautentikasi

Terkadang, Aturan Realtime Database memverifikasi apakah pengguna sudah login, tetapi tidak membatasi akses lebih lanjut berdasarkan autentikasi tersebut. Jika salah satu aturan Anda berisi auth !== null, pastikan bahwa Anda ingin semua pengguna yang login memiliki akses ke data.

Tidak direkomendasikan: Setiap pengguna yang login memiliki akses baca dan tulis akses ke seluruh database Anda

{
  "rules": {
      // any logged-in user access your data
      ".read": "auth !== null",
      ".write": "auth !== null"
   }
}
Solusi: Persempit akses menggunakan variabel auth Saat memeriksa autentikasi, Anda juga dapat menggunakan salah satu properti autentikasi untuk membatasi akses lebih lanjut bagi pengguna tertentu ke kumpulan data tertentu. Pelajari variabel auth lebih lanjut di bagian Keamanan Berbasis Pengguna.

Aturan yang diturunkan dengan tidak semestinya

Aturan Realtime Database bersifat menurun, yaitu aturan di lokasi induk yang lebih dangkal akan mengganti aturan di node turunan yang lebih dalam. Saat Anda menulis aturan di node turunan, ingat bahwa node tersebut hanya dapat memberikan hak istimewa tambahan. Anda tidak dapat memperbaiki atau mencabut akses ke data di path yang lebih dalam di database Anda.

Tidak direkomendasikan: Memperbaiki aturan di path turunan

{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
Solusi: Tuliskan aturan di lokasi induk yang luas dan berikan lebih banyak hak istimewa di lokasi turunan. Jika kebutuhan akses data Anda memerlukan lebih banyak perincian, pertahankan aturan Anda secara terperinci. Pelajari lebih lanjut Aturan Realtime Database menurun di artikel Mengamankan Data Anda.

Akses tertutup

Saat Anda mengembangkan aplikasi, pendekatan umum yang lain adalah menjaga database data Anda tetap terkunci. Biasanya, ini berarti Anda menutup akses baca dan tulis untuk semua pengguna, seperti berikut ini:

{
  "rules": {
    ".read": false,
    ".write": false
  }
}

Meskipun tetap aman, hal ini dapat menimbulkan masalah saat Anda meluncurkan aplikasi. Pelajari lebih lanjut cara mengonfigurasi dan menerapkan Aturan Realtime Database.

Menguji Aturan Realtime Database

Untuk menguji Aturan Realtime Database yang telah diperbarui, gunakan fitur Simulator di Firebase console.

  1. Untuk membuka Simulator, klik Simulator dari tab Aturan.
  2. Di setelan Simulator, pilih opsi untuk pengujian Anda, termasuk:
    • Pengujian baca atau tulis
    • Lokasi tertentu dalam database Anda, berupa path
    • Jenis autentikasi — pengguna yang tidak diautentikasi, pengguna anonim yang diautentikasi, atau ID pengguna tertentu
  3. Klik Jalankan dan cari hasilnya di banner di atas jendela aturan.