Login / Daftar ID | EN
Kenapa Aplikasi Tidak Terhubung Langsung ke Database: Tiga Pagar yang Dipasang Lapisan API
Foto: Pexels
Cyber Security IT

Kenapa Aplikasi Tidak Terhubung Langsung ke Database: Tiga Pagar yang Dipasang Lapisan API

Aplikasi yang Anda pakai setiap hari menyimpan datanya di database, tetapi hampir tidak ada yang membiarkan layar di tangan Anda berbicara langsung kepadanya. Di antara keduanya selalu ada satu lapisan perantara, biasanya berbentuk API. Lapisan itu bukan sekadar kebiasaan arsitektur. Ia adalah tempat tiga pagar keamanan dipasang.

Dua hal yang sering dicampur: lapisan dan tingkat

Dokumentasi arsitektur Microsoft membedakan keduanya. Lapisan (layer) bersifat logis, tingkat (tier) bersifat fisik. Aplikasi tiga tingkat yang lazim terdiri dari tingkat presentasi, tingkat tengah yang opsional, dan tingkat database. Pada model lapisan tertutup, sebuah lapisan hanya boleh memanggil lapisan tepat di bawahnya. Artinya layar tidak menyentuh database; ia meminta ke API, dan hanya API yang boleh bertanya ke database.

Microsoft juga jujur soal harganya: tingkat tengah yang hanya meneruskan operasi CRUD menambah latensi dan kerumitan tanpa nilai berarti. Jadi perantara bukan berkah otomatis. Nilainya ada pada tiga pagar berikut.

Pagar pertama: jaringan

Panduan keamanan database OWASP menyatakan koneksi dari klien tebal langsung ke database tidak boleh dibuat sama sekali ("should never"). Database sebaiknya berada di segmen jaringan internal tersendiri, terpisah dari server aplikasi, dan hanya dapat dijangkau oleh sesedikit mungkin mesin. Kalau layar ponsel atau browser memegang alamat dan kata sandi database, setiap salinan aplikasi menjadi pintu masuk.

Pagar kedua: hak akses sekecil mungkin

Akun yang dipakai aplikasi tidak boleh bertipe administrator. Panduan yang sama menyebut kebanyakan aplikasi cukup memegang izin SELECT, UPDATE, dan DELETE, dan akun itu sebaiknya bukan pemilik database. Satu aplikasi satu akun, dan lingkungan pengembangan, UAT, dan produksi memakai database serta akun yang terpisah. Akun bawaan seperti root, sa, atau SYS tidak dipakai.

Kata sandi database juga tidak boleh tertanam di kode sumber. Simpan di berkas konfigurasi di luar direktori web, hanya terbaca oleh pengguna yang berkepentingan, dan tidak ikut masuk ke kontrol versi.

Ingin mendalaminya lebih terstruktur? Taalenta punya kelas Software QA for Mobile App.

Pagar ketiga: query tidak dirakit dari input mentah

Di API, input pengguna tidak ditempel ke teks perintah SQL. OWASP Cheat Sheet mengurutkan pertahanannya: prepared statement (query berparameter) sebagai pilihan pertama, stored procedure yang disusun benar sebagai pilihan kedua, lalu validasi daftar putih untuk bagian yang tidak bisa diberi parameter seperti nama tabel, nama kolom, atau urutan sortir. Escaping input disebut sangat tidak dianjurkan karena rapuh dan berbeda antar-database.

Dua catatan penting. Stored procedure tidak otomatis aman: OWASP Top 10 edisi 2021 mencatat ia tetap bisa rentan bila menyambung query dengan data atau menjalankan data berbahaya lewat EXECUTE IMMEDIATE atau exec(). Validasi juga bukan pengganti: data yang lolos validasi belum tentu aman disambung menjadi teks query.

Skalanya nyata. Pada edisi 2021 itu, kategori injeksi menempati peringkat ketiga, 94 persen aplikasi diuji untuk bentuk injeksi, dengan tingkat kejadian rata-rata 3,37 persen dan 33 CWE terpetakan.

Ringkasan yang bisa Anda pindai

Pagar Yang dicek Rujukan
Jaringan Database hanya terjangkau dari server aplikasi OWASP Database Security
Hak akses Akun tanpa hak admin, satu akun per aplikasi OWASP Database Security
Query Berparameter, bukan sambungan teks OWASP SQL Injection Prevention
Hak akses Kata sandi di luar kode dan di luar direktori web OWASP Database Security

Cara memakainya

Saat menilai aplikasi sendiri atau buatan AI, tanyakan empat hal: apakah alamat database bisa dijangkau dari luar, akun apa yang dipakai aplikasi dan apa saja izinnya, apakah query dirakit dengan parameter, dan di mana kata sandi database disimpan. Jawaban "belum tahu" pada salah satunya sudah cukup untuk diperiksa lebih dulu.

Kalau lebih enak melihat penjelasannya langsung, ada klip singkat tentang kenapa aplikasi tidak mengakses database secara langsung. Untuk sisi hak akses data di aplikasi buatan AI, lihat juga pembahasan hak akses dan data terbuka.

Sumber

  1. SQL Injection Prevention Cheat Sheet, OWASP Cheat Sheet Series
  2. Database Security Cheat Sheet, OWASP Cheat Sheet Series
  3. A03:2021 Injection, OWASP Top 10:2021
  4. N-tier architecture style, Microsoft Azure Architecture Center