Lindungi Bisnis dari SQL Injection denga 4 Tips Ini
![https://dqlab.id/files/dqlab/cache/longtail-selasa-06-2024-05-23-212507_x_Thumbnail800.jpg](https://dqlab.id/files/dqlab/cache/longtail-selasa-06-2024-05-23-212507_x_Thumbnail800.jpg)
Kejahatan digital menjadi sering ditemukan seiring dengan adanya transformasi digital. Salah satunya adalah SQL injection. Aktivitas ini membuat para hacker dengan mudah dapat mengakses database meskipun melakukan login dengan input username dan password yang salah sekalipun. Hal ini pasti sangat membahayakan terutama bagi bisnis perusahaan.
SQL injection dapat diatasi dengan beberapa hal yang tentunya dilakukan dengan teknik tingkat tinggi. Seperti persiapkan validasi input atau gunakan kerangka khusus pelindung web atau aplikasi. Kali ini akan dibahas lebih dalam apa saja yang bisa Sahabat DQ lakukan untuk melindungi data dari kejahatan tersebut. Yuk, simak penjelasannya!
1. Gunakan Prosedur Tersimpan, Bukan SQL yang Dinamis
Perhatikan penjelasan berikut. Pada gambar di bawah, kalian dapat melihat hasil setelah pengguna mengeksekusi SQL injection di form login. Perhatikan bahwa pernyataan keempat diabaikan karena sintaks "–" menonaktifkan semua perintah yang sukses, dan pernyataan ketiga selalu mengembalikan "benar". Dengan demikian, pengguna berhasil login, bahkan ketika nama pengguna dan kata sandi salah.
Menggunakan prosedur tersimpan mencegah injeksi SQL terjadi karena parameter input selalu diperlakukan sebagai nilai teks aktual, bukan sebagai perintah. Versi pseudocode login baru yang ditunjukkan di bawah ini menggunakan prosedur tersimpan, alternatif yang jauh lebih aman dibandingkan dengan SQL dinamis.
Prosedur tersimpan didefinisikan sebagai perintah SQL terkompilasi yang disimpan dalam server basis data yang dapat digunakan kembali berkali-kali oleh program eksternal.
Baca juga : Bootcamp Data Analyst with SQL and Python
2. Gunakan Prepared Statement (PS)
Prepared Statement (PS) merupakan perintah SQL pra-kompilasi yang dibuat di dalam program yang dapat digunakan berkali-kali selama siklus aplikasi. Secara default, parameter masukan PS dikunci. Parameter yang dikunci diperlakukan sebagai nilai teks biasa, yang mencegah perubahan perintah apapun selama serangan SQL injection.
Perhatikan contoh di atas. Variasi PS dari query SQL dinamis yang diperkenalkan sebelumnya mempertahankan perilaku login yang dimaksud meskipun ada parameter injeksi SQL. Cara ini tidak akan menyebabkan SQL injection sukses dilakukan.
3. Gunakan Kerangka Object Relational Mapping (ORM)
ORM adalah teknik pemrograman di mana tabel dalam database diubah menjadi objek yang mewakili struktur database. Pemrogram dapat dengan aman menggunakan objek untuk berkomunikasi dengan tabel di database untuk menjalankan perintah seperti menyisipkan, memperbarui, mencari, dan menghapus.
Contoh dari kerangka ORM di Java adalah Hibernate. Perhatikan gambar di atas. Pada baris 2, "username '' dan "password" adalah parameter terikat yang ditetapkan pada baris ke-3 dan ke-4. Nilai yang melewati baris ke-3 dan ke-4 akan diperlakukan sebagai string dan bukan sebagai bagian dari perintah SQL. Perintah pada baris 5 bahkan lebih aman karena secara eksplisit memberi tahu Hibernate untuk mengharapkan hasil kueri tunggal untuk kredensial pengguna.
Baca juga : Catat! Ini 3 Keuntungan Belajar SQL dalam Mengolah Data
4. Input Validation
Input validation berperan penting dalam mencegah injeksi SQL. Input yang mencurigakan disaring sebelum dikirim atau diproses oleh server saat divalidasi. Contoh validasi input adalah validator email. Ada dua jenis validasi: sisi server dan sisi klien.
Misalkan proses validasi dari sisi klien. Kolom input hanya menerima alamat email yang valid berdasarkan ekspresi reguler Dalam kasus layanan mikro di mana nilai diteruskan melalui REST API, validasi harus dilakukan di sisi server. Memberikan input nilai yang tidak sesuai dengan email ekspresi reguler akan ditolak oleh server.
Server akan memberikan peringatan jika nilai yang dikirimkan bukan alamat email yang valid. Spring Framework salah satu dari sekian banyak framework pemrograman yang bisa digunakan untuk input validation, dan klien bebas memilih salah satu berdasarkan preferensi dan pengetahuan teknis mereka.
5. Gunakan Firewall Aplikasi Web
Meluncurkan situs web di Internet menghadapkan pada ancaman, karena rentan terhadap serangan. Untuk melindungi situs web, diperlukan firewall aplikasi web (WAF). Menurut OWASP.org, WAF adalah “firewall aplikasi untuk aplikasi HTTP. Itu menerapkan seperangkat aturan untuk percakapan HTTP. Umumnya, aturan ini mencakup serangan umum seperti skrip lintas situs (XSS) dan injeksi SQL.”
WAF adalah perlindungan lapisan 7 yang bekerja dengan memfilter pola injeksi SQL umum dalam permintaan HTTP. Berikut adalah dua WAF open source paling terkenal yang dapat digunakan melawan injeksi SQL:
ModSecurity: Ini adalah WAF open source populer yang dimiliki oleh TrustWave. WAF ini tidak memiliki UI, tetapi bekerja dengan baik melindungi terhadap injeksi SQL.
NGINX WAF: WAF ini didasarkan pada alat ModSecurity open source, dan telah dimodifikasi untuk penggunaan perusahaan. WAF ini memiliki UI logging audit yang memungkinkan administrator sistem untuk memantau situs web dari jarak jauh.
Kejahatan bisa terjadi dimana saja, bahkan di dunia digital sekalipun. Serangan SQL Injection bukanlah satu-satunya kejahatan yang akan kita temui, karena ada banyak sekali kejahatan siber yang mengancam website atau aplikasi yang kita miliki. Sehingga kita harus terus waspada dan terus meningkatkan keamanan website.
Namun sebelum masuk ke tingkat advance tersebut, ada baiknya belajar hal-hal yang bersifat fundamental dari SQL. Darimana belajar SQL yang sesuai dengan kebutuhan tersebut? DQLab adalah jawabannya. Modul ajarnya lengkap dan bervariasi. Dilengkapi studi kasus yang membantu kalian belajar memecahkan masalah dari berbagai kasus. Bahkan diintegrasikan dengan ChatGPT. Manfaatnya apa?
Membantu kalian menjelaskan lebih detail code yang sedang dipelajari
Membantu menemukan code yang salah atau tidak sesuai
Memberikan solusi atas problem yang dihadapi pada code
Membantu kalian belajar kapanpun dan dimanapun
Selain itu, DQLab juga menggunakan metode HERO yaitu Hands-On, Experiential Learning & Outcome-based, yang dirancang ramah untuk pemula. Tunggu apa lagi, segera Sign Up dan perkuat kemampuan SQL kalian untuk melindungi database dengan ikuti Bootcamp Data Analyst with SQL and Python!