Bagaimana cara membatasi modifikasi data Firebase?


93

Firebase menyediakan database back-end sehingga developer bisa fokus pada kode sisi klien.

Jadi, jika seseorang mengambil firebase uri saya (misalnya, https://firebaseinstance.firebaseio.com) kemudian mengembangkannya secara lokal .

Lalu, apakah mereka dapat membuat aplikasi lain dari instance Firebase saya, mendaftar dan mengautentikasi diri mereka sendiri untuk membaca semua data aplikasi Firebase saya?

Jawaban:


104

@Rrrrrrrrrrrrrrrrr ...

Anda menyebutkan serangan phishing. Sebenarnya ada cara untuk mengamankan itu.

Jika Anda masuk ke konsol Pengelola API GoogleAPI, Anda memiliki opsi untuk mengunci perujuk HTTP mana yang permintaannya akan diterima aplikasi Anda.

  1. kunjungi https://console.developers.google.com/apis
  2. Buka proyek firebase Anda
  3. Buka kredensial
  4. Di bawah kunci API, pilih kunci Browser yang terkait dengan proyek firebase Anda (harus memiliki kunci yang sama dengan kunci API yang Anda gunakan untuk menginisialisasi aplikasi firebase Anda.)
  5. Di bawah "Terima permintaan dari perujuk HTTP ini (situs web), cukup tambahkan URL aplikasi Anda.

Ini seharusnya hanya mengizinkan domain yang masuk daftar putih untuk menggunakan aplikasi Anda.

Ini juga dijelaskan di sini dalam daftar periksa peluncuran firebase di sini: https://firebase.google.com/support/guides/launch-checklist

Mungkin dokumentasi firebase dapat membuatnya lebih terlihat atau secara otomatis mengunci domain secara default dan mengharuskan pengguna untuk mengizinkan akses?


2
ketika saya membuka konsol Google API, saya tidak melihat opsi untuk mengunci perujuk HTTP. Screenshot akan sangat membantu. thx
rattanak

Sudahkah Anda mencoba mengikuti langkah-langkah di atas? Ini akan membawa Anda ke sana. Untuk alasan keamanan, saya tidak akan mengambil screencap. Ingatlah untuk mencari kunci browser. semoga berhasil.
prufrofro

4
Bagaimana jika menggunakan firebase dengan aplikasi seluler hybrid, menggunakan framework seperti ionic, bagaimana cara kerja daftar putih? Ada saran?
Dinana

1
@prufrofro Apakah itu berfungsi dengan baik untuk Anda? Sedang berpikir untuk melakukan hal yang sama untuk aplikasi Android. Saya bertanya-tanya mengapa Firebase tidak membahasnya di bagian keamanan.
steliosf

2
@Anand Ya, tetapi Firebase tidak mencakup ini dalam dokumentasi. Secara default, kuncinya bersifat publik dan Anda harus membatasinya secara manual untuk digunakan hanya dalam nama paket tertentu dan sertifikat aplikasi SHA-1. Dan saya bertanya-tanya mengapa Firebase tidak menyebutkan ini sama sekali. Apakah ada tangkapan atau sesuatu?
steliosf

38

Fakta bahwa seseorang mengetahui URL Anda bukanlah risiko keamanan.

Misalnya: Saya tidak masalah memberi tahu Anda bahwa bank saya meng-host situs webnya di bankofamerica.com dan menggunakan protokol HTTP di sana. Kecuali Anda juga mengetahui kredensial yang saya gunakan untuk mengakses situs itu, mengetahui URL tidak ada gunanya bagi Anda.

Untuk mengamankan data Anda, database Anda harus dilindungi dengan:

  • aturan validasi yang memastikan semua data mematuhi struktur yang Anda inginkan
  • aturan otorisasi untuk memastikan bahwa setiap bit data hanya dapat dibaca dan dimodifikasi oleh pengguna yang berwenang

Ini semua tercakup dalam dokumentasi Firebase tentang Keamanan & Aturan , yang sangat saya rekomendasikan.

Dengan aturan keamanan ini, satu-satunya cara aplikasi orang lain dapat mengakses data dalam database Anda adalah jika mereka menyalin fungsionalitas aplikasi Anda, meminta pengguna masuk ke aplikasi mereka, bukan milik Anda, dan masuk / membaca dari / menulis ke database Anda; pada dasarnya serangan phishing. Dalam hal ini tidak ada masalah keamanan dalam database, meskipun mungkin sudah waktunya untuk melibatkan beberapa pihak berwenang.


4
bukan jawaban yang saya cari. Izinkan saya bertanya dengan cara berbeda. Misalkan saya memberi Anda url ini ke firebase https://tinderclone.firebaseio.com/dan https://tinderclone.firebaseio.com/profiles.json. Mereka adalah basis data firebase nyata. Bisakah Anda mengembangkan aplikasi darinya, membuat formulir pendaftaran dan formulir login dengan email. Karena aplikasi saya memungkinkan siapa saja untuk mendaftar dengan email, setelah Anda mendaftar, apakah Anda bisa membaca semua data? Saya akan menanyakan pertanyaan lain nanti. Terima kasih
rattanak

4
Itu tergantung pada bagaimana Anda mengamankan database Anda. Cukup menambahkan ".read": falseakan mencegah siapa pun melihat data. Anda mungkin ingin mengizinkan lebih dari itu, tetapi itu semua tergantung pada kasus penggunaan Anda. Mengamankan data tercakup dalam dokumentasi Firebase tentang Keamanan & Aturan .
Frank van Puffelen

6

Mengenai daftar putih Auth untuk aplikasi seluler, jika nama domain tidak berlaku, Firebase memilikinya

1) SHA1 fingerprintuntuk aplikasi Android dan

2) App Store ID and Bundle ID and Team ID (if necessary)untuk aplikasi iOS Anda

yang harus Anda konfigurasi di konsol Firebase.

Dengan perlindungan ini, karena validasi tidak hanya jika seseorang memiliki kunci API valid, domain Tupoksi, dll, tetapi juga, itu berasal dari aplikasi resmi kami dan domain name/HTTP referrer in casedari Web .

Oleh karena itu, kita tidak perlu khawatir jika kunci API dan parameter koneksi lainnya terekspos ke orang lain.

Untuk info lebih lanjut, https://firebase.google.com/support/guides/launch-checklist


Maafkan ketidaktahuan saya, saya tidak begitu baik dengan enkripsi tetapi bukankah Sha1 dapat diakses melalui apk Anda? Tidak bisakah orang menyalin Sha1 juga? Saya tidak melihat bagaimana ini membantu. Saya akan sangat senang jika terbukti sebaliknya :)
cs guy

Iya. Anda pasti bisa mendapatkan sha1 apk. Tapi itu bukan sesuatu yang Anda berikan sebagai parameter ke firebase untuk memvalidasi panggilan Anda. Ini diambil oleh firebase pada level api-sdk (percaya dari runtime android). Jadi, Anda tidak akan dapat mengirim ini ke firebase sebagai parameter untuk memalsukan koneksi.
Anand

Menggunakan sidik jari SHA1 saja tidak akan membantu apa pun untuk mengamankan komunikasi aplikasi Android Anda dengan Firebase. SHA1 itu sendiri dapat diperoleh dan disalin dengan mudah, dan koneksi masih bisa dipalsukan dengan menggunakan API Firebase, bukan SDK. Anda harus menguji aplikasi Anda terlebih dahulu, dan menggunakan beberapa kode obfuscation untuk menyembunyikan kunci.
FEBRYAN ASA PERDANA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.