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 Firebase Database Anda. Gunakan panduan ini untuk memeriksa Aturan Firebase Database Anda, pahami potensi ketidakamanan, dan uji perubahan Anda sebelum diterapkan.

Meninjau Aturan Firebase Database Anda

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

Memahami Aturan Firebase Database Anda

Aturan Firebase Database menjadi penghalang antara data Anda dan 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 Anda. Saat mengonfigurasi aturan, gunakan Simulator untuk menguji berbagai aturan.

Jika Anda baru mengenal Aturan Firebase Database, pelajari lebih lanjut tentang cara kerjanya di bagian Memulai Aturan Database.

Mengatasi ketidakamanan yang sering terjadi

Aturan Firebase 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 mungkin 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 Firebase 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 Keamanan Berbasis Pengguna.

Aturan yang diturunkan dengan tidak semestinya

Aturan Firebase Database bersifat menurun, yaitu aturan di path induk yang lebih dangkal akan menimpa 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 path induk yang luas dan berikan lebih banyak hak istimewa di path turunan. Jika kebutuhan akses data Anda memerlukan lebih banyak perincian, pertahankan aturan Anda secara terperinci. Pelajari lebih lanjut tentang penurunan Aturan Database di bagian 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
  }
}

Bukannya tidak aman, tetapi hal ini dapat menimbulkan masalah saat Anda meluncurkan aplikasi. Pelajari lebih lanjut tentang mengonfigurasi dan menerapkan Aturan Firebase Database.

Menguji Aturan Firebase Database Anda

Untuk menguji Aturan Firebase 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.