Parse Keamanan Server
Halo semuanya, pada artikel ini saya akan membahas tentang Keamanan saat menggunakan Parse Server di Back4App. Karena keamanan bukanlah topik yang membuat pengembang senang, saya akan sangat ringkas dan langsung. Tujuan saya di sini adalah untuk memberikan daftar periksa keamanan singkat untuk meninjau Aplikasi Anda sebelum menjadikannya Aplikasi Produksi.
Parse Mekanisme Keamanan
Untuk mengonfigurasi akses keamanan yang memadai ke Aplikasi Anda dengan benar, Anda harus terlebih dahulu memahami beberapa Konsep Mekanisme Keamanan Dasar Parse, Kelas Parse Default, dan Mekanisme Autentikasi.
Kelas Default 1-Parse
Parse membuat 3 Kelas secara default: Pengguna, Peran, dan Sesi. Kelas-kelas tersebut sepenuhnya terintegrasi dengan seluruh backend dan juga akan membuat hidup Anda lebih mudah ketika mengonfigurasi Mekanisme Otentikasi untuk melindungi Aplikasi Anda.
Pengguna
Parse menyediakan kelas pengguna khusus yang disebut Parse.User
yang secara otomatis menangani sebagian besar fungsionalitas yang diperlukan untuk manajemen akun pengguna.
Kelas Parse.User
diamankan secara default. Data yang disimpan di dalam Parse.User
hanya dapat dimodifikasi oleh pengguna tersebut. Secara default, data masih dapat dibaca oleh klien mana pun. Dengan demikian, beberapa objek Parse.User
diautentikasi dan dapat dimodifikasi, sedangkan yang lain hanya dapat dibaca.
Peran
Peran adalah Kelas tempat Anda dapat mengaitkan Pengguna dan Peran Lain ke dalam Peran baru. Setelah membuat Peran, Anda dapat menggunakannya untuk menentukan apa yang akan diakses oleh Peran tersebut di Aplikasi Anda dengan menggunakan CLP dan ACL.
Sesi
Ketika Anda memasukkan pengguna melalui metode login Pengguna
, Parse akan secara otomatis membuat objek Sesi
baru yang tidak dibatasi di Server Parse Anda. Sama untuk pendaftaran dan login Facebook/Twitter.
Mekanisme Autentikasi 2-Parse
Ketika berbicara tentang Akses Data di Parse, Anda dapat mengontrol Keamanan Aplikasi Anda pada 2 tingkat yang berbeda:
- Kelas/Tabel – Gunakan CLP (Izin Tingkat Kelas) untuk membatasi pembuatan kolom baru dan Akses Data umum ke seluruh kelas;
- Objek- Gunakan ACL (Access Control Lists) untuk mengontrol akses pada objek tertentu;
Izin Tingkat Kelas – CLP
Class level Permissions adalah mekanisme yang mengontrol akses sebuah Class dan semua objeknya. Dengan menggunakan CLP, Anda dapat mengonfigurasi akses Baca/Tulis ke Role, Pengguna, atau Pointer.
Dengan menggunakan mekanisme ini, Anda dapat membatasi akses ke operasi berikut:
- Baca
- Get – Mengambil informasi objek untuk ObjectId tertentu;
- Cari – Menanyakan semua objek dalam Kelas ini (ObjectID tidak diperlukan);
- Hitung – Jumlah total objek di dalam kelas;
- Menulis
- Buat – Membuat Objek baru;
- Perbarui – Memperbarui Objek yang ada;
- Hapus – Menghapus Objek yang ada;
- Menambahkan
- Tambah Kolom – Membuat kolom baru di Kelas ini;
Untuk mengakses opsi konfigurasi ini, Anda harus membuka ikon perisai kecil di Class menu cepat kanan atas.
Setelah mengklik ikon perisai, Anda akan melihat menu sederhana dengan opsi baca/tulis yang tersedia. Klik ikon kanan atas jendela Anda untuk mengakses Konfigurasi CLP Lanjutan.
Kemudian, Anda akan melihat jendela konfigurasi CLP yang lengkap.
Daftar Kontrol Akses – ACL
Daftar Kontrol Akses memungkinkan Anda untuk mengontrol akses ke setiap objek dari Kelas tertentu secara berbeda. Anda dapat membuat ACL ke sebuah objek dan mengonfigurasi akses (baca/tulis) untuk setiap Peran atau Pengguna.
Parse selalu membutuhkan ACL untuk membuat Role apapun. Jadi, untuk membuat Peran Pertama Anda akan membutuhkan pengguna. Mari kita buat pengguna root untuk membuat Peran Pertama di Aplikasi kita. Pengguna ini akan menjadi satu-satunya pengguna yang dapat mengedit Role ini.
Pertama, kita dapat membuat pengguna root hanya dengan mengisi nama pengguna dan kata sandi pada Tabel Pengguna.
Kemudian Anda menyalin ObjectId Pengguna root dan masuk ke Kelas Peran. Buat Role baru dan klik dua kali pada bidang ACL untuk membuat ACL. Dalam kasus ini, saya akan mengizinkan pengguna root untuk membaca/menulis ACL ini, jadi mari kita isi ACL dengan ObjectID pengguna root dan kemudian menyimpannya.
Setelah langkah ini, mari kita beri nama Role ini dengan nama Admin dan mengasosiasikan pengguna Alex dan Alysson. Karena Role Class memiliki relasi dengan User Class, Anda dapat mengklik overview relation dan kemudian menambahkan ObjectID dari pengguna yang ingin Anda tambahkan ke relasi ini.
Sekarang Anda memiliki Role Admin dengan 2 pengguna yang dapat Anda gunakan untuk membuat Role baru, untuk mengatribusikan pada ACL atau CLP baru.
Daftar Periksa Aplikasi Keamanan
Sekarang Anda telah memahami konsep utama Parse Security, saya ingin menyarankan beberapa saran untuk membuat Aplikasi Anda lebih aman.
1-Simpan Kunci Utama dengan Aman
Master Key adalah mekanisme Parse untuk melewati semua lapisan keamanan lainnya. Perbandingan yang baik adalah memiliki Kunci Master Aplikasi untuk sebuah Aplikasi seperti memiliki akses root dari Server.
Inilah sebabnya mengapa Anda harus melindungi kunci ini dan bila perlu gunakan kunci hanya melalui kode cloud. Anda harus menghindari menggunakannya pada kode Front end Anda karena seseorang dapat mendekompilasi atau, dalam kasus JS, cukup klik pada view source dan menyalin Key Anda.
Saran lainnya adalah ketika menggunakan kunci ini dalam kode cloud, pastikan Anda tidak akan mengkomit kunci (yang merupakan bagian dari kode cloud Anda) ke repositori kode publik mana pun.
2-Hapus centang pada Pembuatan Kelas Klien
Ketika Anda membuat Aplikasi baru di Back4App, Kunci Parse allowClientClassCreation diaktifkan. Itu berarti siapa pun yang memiliki AppID dan Client Key dapat membuat kelas baru di database Anda.
Anda dapat mengubah konfigurasi ini di Back4App pada Pengaturan Server->Pengaturan Inti->Pilihan Menu Pengaturan.
Cukup gulir ke bawah dan hapus centang pada opsi “Izinkan Pembuatan Kelas Klien” seperti yang ditunjukkan di bawah ini.
Rekomendasi di sini adalah untuk tetap mengaktifkan opsi ini saat Anda mengembangkan aplikasi Anda dan setelah Anda selesai, hapuslah.
3-Buat Struktur Peran
Seperti yang telah kita mulai pada bagian ACL, Anda dapat melanjutkan dan membangun Struktur Peran untuk mengontrol akses yang lebih baik atas semua Kelas dan Objek Aplikasi Anda. Katakanlah Anda sedang membangun Aplikasi Uber-Clone dan Anda memiliki 3 akses utama: Admin, Penumpang, Pengemudi.
4-Konfigurasi CLP untuk Pengguna dan Peran
Karena Pengguna adalah Kelas Parse default, siapa pun yang memiliki nama kelas, kunci REST API, dan ID Aplikasi dapat meminta semua daftar pengguna Anda dengan membuat satu perintah curl:
curl -X GET -H "X-Parse-Application-Id: FyebII2zNpA2i9DdZ8froWna9vIvJMcgjfmjS0iK" -H "X-Parse-REST-API-Key: hluEgfZ084RdR0MyyE8Y9v4RwsOsTIWlJeCc4qGw" https://parseapi.back4app.com/users
Dan ambil Daftar Pengguna:
Anda dapat menghindari hal tersebut dengan membuat CLP dan membatasi kekuatan siapa yang dapat membaca/menulis Tabel Pengguna Anda (Anda juga dapat membuat proteksi dengan menggunakan ACL). Dalam kasus ini, saya akan mengizinkan hanya Pengguna Admin yang dapat membaca Daftar Pengguna secara lengkap.
Anda dapat membuat proses serupa dengan Role Class dan menghapus akses dari Role/Pengguna yang tidak perlu membaca kelas secara lengkap.
Session Class dilindungi secara default karena semua objek Session
memiliki ACL yang dibuat secara otomatis yang hanya dapat dibaca dan ditulis oleh pengguna tersebut.
5-Membuat Kelas Tetap Hanya-Baca
Jika Anda memiliki tabel/kelas yang hanya ingin diubah melalui Parse Dashboard, Anda dapat menjadikannya hanya-baca menggunakan CLP. Dalam kasus saya, saya membuat sebuah kelas yang mendefinisikan kota tempat Uber-Clone-App saya akan beroperasi.
Saya ingin mengubah Class ini hanya melalui Parse Dashboard sehingga saya akan menghapus hak akses tulis dari semua Role lainnya.
6-Saran umum CLP dan ACL
Sebagian besar kelas di aplikasi Anda akan masuk ke dalam salah satu dari beberapa kategori yang mudah diamankan. Untuk data yang sepenuhnya bersifat publik, Anda bisa menggunakan izin tingkat kelas untuk mengunci tabel agar tidak dapat dibaca dan ditulis oleh siapa pun. Untuk data yang sepenuhnya privat, Anda dapat menggunakan ACL untuk memastikan bahwa hanya pengguna yang memiliki data yang dapat membacanya.
Namun, terkadang, Anda akan menghadapi situasi di mana Anda tidak ingin data yang sepenuhnya publik atau sepenuhnya pribadi. Sebagai contoh, Anda mungkin memiliki aplikasi sosial, di mana Anda memiliki data pengguna yang hanya dapat dibaca oleh teman-teman yang telah disetujui. Untuk itu, Anda memerlukan kombinasi teknik yang dibahas dalam panduan ini untuk mengaktifkan aturan berbagi yang Anda inginkan.
Lihat video ini tentang Cara membuat ACL untuk lebih jelasnya.
7-Setel Durasi Sesi Anda (Hanya beberapa Kasus)
Jika Anda mengembangkan Aplikasi yang melibatkan informasi yang sangat sensitif (Aplikasi Perbankan, Aplikasi Layanan Kesehatan) dan Anda mungkin perlu mengeluarkan pengguna setelah beberapa saat.
Untuk membatasi Panjang Sesi, buka Pengaturan Server->Pengaturan Aplikasi Khusus.
Pada kotak teks Custom Parse Options, tentukan Panjang Sesi dalam hitungan detik. Dalam kasus di bawah ini, saya mendefinisikan Sesi 10 menit. Kemudian klik Simpan.
8-Menggunakan Https dan SSL
Https adalah protokol yang aman untuk mentransfer informasi dari peramban klien ke server Anda. Hal ini diperlukan untuk mencegah peretas mengakses informasi sensitif dengan serangan seperti MITM.
Saran di sini adalah menggunakan Https daripada Http untuk membuat koneksi dengan Parse Server. Di bawah ini adalah contoh menggunakan Koneksi JS dengan Parse yang menunjukkan cara menggunakan https dengan benar untuk membuat koneksi aktif. Perhatikan bahwa cara yang salah adalah dengan menggunakan http://, bukan https://.
Parsing.inisialisasi("APP_ID", "JS_KEY"); Parse.serverURL = 'https://parseapi.back4app.com/'
Jika Anda menggunakan Back4App Webhosting, penting untuk dicatat bahwa Back4App sudah menyediakan koneksi https secara default (Anda harus menggunakan https:// dalam panggilan Anda!).
Tetapi jika Anda ingin menggunakan nama domain Anda sendiri dan mengalihkan ke server Back4App, pastikan sertifikat SSL Anda valid dan terinstal dengan baik dan Anda melakukan pengalihan ke Back4App menggunakan https.
Kata Penutup
Back4App dan Parse menyediakan sejumlah cara bagi Anda untuk mengamankan data di Cloud. Saat Anda membangun Aplikasi Anda dan mengevaluasi jenis data yang akan Anda simpan, Anda dapat membuat keputusan tentang implementasi mana yang akan dipilih.
Kami berharap Anda akan menggunakan alat bantu ini untuk melakukan semua yang dapat Anda lakukan untuk menjaga keamanan data Aplikasi dan data pengguna. Bersama-sama, kita dapat membuat web menjadi tempat yang lebih aman.