Skip to content

Dasar Backend dan Pentingnya Keamanan Backend

  • 5 min read

Dasar Backend dan Pentingnya Keamanan Backend

Seperti namanya, backend adalah bagian dari suatu sistem yang ada pada belakang layar. Backend sering digunakan untuk penyimpanan data dan komunikasi, umumnya terdiri dari server dan database. Backend merupakan repositori dari segala hal yang membuat website kita tampil dan berjalan lancar. Semua informasi yang ada pada backend disimpan secara remote atau di server berbasis cloud dan informasi penting yang bersifat sensitif atau rahasia ada pada backend. Hal tersebut bisa menimbulkan berbagai kerentanan bahkan serangan siber. Keamanan backend sangat penting sekali bagi kita implementasikan dan pelajari, karena ada berbagai macam resiko dalam keamanan backened. Adapun contoh dari resiko dalam keamanan backend adalah sebagai berikut:

  • Data Injection, penggunaan query untuk meng-hack server web aplikasi
  • Kurangnya Keamanan Autentikasi, tidak membatasi login dari user dengan IP address tertentu
  • Miss Konfigurasi Akses Kontrol, kepemilikan hak akses bagi orang-orang tak berkepentingan
  • Miss Konfigurasi Software. Menghiraukan pesan error atau notifikasi saat mengkonfigurasi software
  • Komponen Software Yang Outdated, membuka area sensitif 
  • Kurangnya Scan Kerentanan Sistem
  • Terpaparnya Data Sensitif
  • Tidak Menggunakan Enkripsi
  • Miskonfigurasi SSL dan Kurangnya Monitoring, tidak memastikan sertifikat SSL masih berlaku dan terkonfigurasi dengan salah.
  • Kurangnya Manajemen Log Sentral, Kurangnya manajemen logging bisa memberikan hak akses lebih ke user yang tidak seharusnya.

SQL Injection

SQL injection adalah teknik yang penyerang gunakan untuk mendapatkan akses tidak sah ke aplikasi web database dengan menambahkan string dari kode berbahaya untuk query database. SQL injection (SQLi) memanipulasi kode SQL untuk menyediakan akses ke sumber daya yang dilindungi, seperti data sensitif, atau mengeksekusi berbahaya pernyataan SQL Untuk mengecek hal tersebut, bagaimana mengeceknya? Lakukan lah deteksi manual pada sistem dengan menggunakan tes terhadap setiap titik inputan dalam sistem database kita, berikut adalah tes yang dapat kita lakukan:

  • Menginputkan karakter quote (‘) dan mencari error atau kejanggalan lainnya
  • Menginputkan sintax SQL tertentu yang mengevaluasi nilai asli dari titik inputan, nilai yang berbeda, dan mencari perbedaan dari respon yang aplikasi berikan
  • Menginputkan kondisi boolean (true/false) atau 1=1 atau 1=2, dan mencari perbedaan dari respon yang aplikasi berikan
  • Menginputkan payloads yang didesain untuk mentrigger waktu delay saat mengeksekusi SQL query, dan mencari perbedaan waktu dimana aplikasi merespons dengan payload dan tanpa payload
  • Menginputkan payloads OAST yang didesain untuk mentrigger interaksi jaringan out-of-band yang dieksekusi  SQL query, dan memonitori hasil dari interaksi jaringan tersebut.

Banyak kerentanan SQL injection yang timbul dari query SELECT WHERE, UPDATE, INSERT, dan SELECT ORDER BY. Tipe sql injection tersebut umumnya sering kali digunakan oleh tester berpengalaman dalam mengaudit sebuah sistem database.

Miskonfigurasi Akses Kontrol

Kerentanan akses kontrol biasanya disebabkan oleh kurangnya deteksi otomatis dan kurangnya pengujian yang efektif oleh pengembang. Dampak teknisnya adalah penyerang dapat menggunakan fungsi istimewa atau membuat, mengakses, mengubah, atau menghapus catatan bisnis yang ada untuk menyamar sebagai pengguna atau administrator. Berikut cara mencegahnya:

1. Mengimplementasikan mekanisme akses kontrol hanya sekali dan kembali menggunakannya di sepanjang aplikasi, termasuk meminimalisir penggunaan CORS

2. Kontrol akses harus dengan record kepemilikan, daripada dengan memberikan semua pengguna menjadi dapat melakukan pembuatan, pembacaan, pengubahan, atau penghapusan record.

3. Menonaktifkan direktori listing web server dan menjaga file metadata dan file backup agar tidak ada di root web.

4. Awas terhadap kesalahan akses kontrol log, memberikan alert kepada admin bila terjadi kesalahan dalam akses kontrol

5. Membatasi akses API dan kontroler untuk meminimalisir serangan tertentu

6. Token JWT harus tidak berlaku lagi di dalam server setelah logout.

7. Developers harus melakukan tes akses kontrol secara berkala.

Konfigurasi SSL 

SSL (secure sockets layer dan TLS (transport layer security) adalah mekanisme untuk mengirimkan data secara aman. Sistem keamanan SSL bila digunakan akan mengubah website dari HTTP menjadi HTTPS. Tugasnya antara lain mengenkripsi dan memeriksa integritas traffic antara browser dengan server, memeriksa apakah browser berkomunikasi dengan server yang tepat, memeriksa apakah pemilik domain dan pemilik server adalah sama. Hal ini mencegah serangan man-in-the-middle. Adapun konfigurasi yang direkomendasikan adalah dengan menggunakan Cipher suites, versi SSL dan TTL yang terbaru, menggunakan panjang kunci 2048 RSA, Certificate signature, menggunakan ECC, ataupun Forward secrecy.

Manajemen Log Terpusat

Manajemen log adalah proses mengelola server, aplikasi, dan log jaringan, melakukan pengumpulan, analisis, penyimpanan, dan pemecahan masalah log dari berbagai server, aplikasi, dan kerangka kerja log. Pengumpulan log yang baik memungkinkan administrator/DevOps untuk mengaitkan log dengan kinerja untuk memaksimalkan kinerja dan produktivitas.

Enkripsi Komunikasi Client-Server

Algoritma enkripsi terbagi menjadi dua jenis, yaitu algoritma enkripsi simetris dan asimetris. Algoritma enkripsi simetris menggunakan kunci yang sama untuk enkripsi dan dekripsi. Sedangkan algoritma enkripsi asimetris menggunakan dua kunci yang berbeda untuk enkripsi dan dekripsi, dimana kunci enkripsinya dapat disebarkan secara luar ke berbagai pengguna, dan kunci deskripsinya bersifat rahasia dan hanya dimiliki oleh pengguna tertentu. Contoh dari enkipsi komunikasi client-server misalnya, Pada saat melakukan komunikasi, kita menggunakan koneksi yang terenkripsi untuk membeli sesuatu di web online, maka komputer kita akan mengirimkan paket data ke server yang terkoneksi, dimana server yang terkoneksi akan mengirimkan kita sertifikat yang berisi kunci publik yang memungkinkan kita untuk mengenkripsi data yang dikirim ke server. Server memastikan identitas komputer kita agar kita tau bahwa penerima data kartu kredit kita adalah penerima yang tepat, bukan orang ketiga.

Tags: