SQL Injection adalah jenis serangan keamanan yang mengeksploitasi celah dalam pengelolaan input data oleh aplikasi. Penyerang dapat menggunakan teknik ini untuk memanipulasi SQL query yang dieksekusi oleh aplikasi dan dapat membahayakan, memanipulasi, atau mengambil alih data dalam database.
Mendapatkan Data yang Tidak Sah 🡺 Ini mungkin merupakan tujuan paling umum dari serangan SQL Injection. Dengan teknik ini, penyerang dapat mengakses data yang seharusnya tidak bisa diakses, seperti data pengguna lain, informasi pribadi, atau data sensitif lainnya. Memanipulasi Data 🡺 Serangan SQL Injection juga dapat digunakan untuk merubah data di database. Ini bisa digunakan untuk mengubah informasi penting, seperti harga produk di toko online, atau bahkan merusak data. Mengambil alih Kontrol Database atau Sistem 🡺 SQL Injection dapat digunakan untuk menjalankan perintah yang memungkinkan penyerang mengambil alih kontrol sistem. Misalnya, dengan meng-upload sebuah shell yang memungkinkan mereka untuk menjalankan perintah secara langsung di sistem. Mengungkap Informasi tentang Sistem 🡺 Penyerang bisa mendapatkan informasi tentang struktur database dan sistem yang menjadi target. Informasi ini kemudian bisa digunakan untuk serangan lebih lanjut. Menghancurkan atau Mengacaukan Sistem 🡺 Penyerang bisa menggunakan SQL Injection untuk menghapus seluruh tabel atau database, atau mengacaukan sistem dengan cara lain.
Sanitasi Input 🡺 memastikan bahwa semua input dari pengguna dibersihkan sebelum digunakan dalam kueri SQL. Sanitasi bisa berarti melakukan "escape" karakter khusus, memastikan input adalah tipe data yang diharapkan, atau menggunakan daftar putih input yang diperbolehkan. Prepared Statements 🡺 Istilah lain parameterized queries, fitur dalam banyak bahasa pemrograman yang memungkinkan Anda menulis kueri SQL dengan placeholder untuk input pengguna. Ketika kueri dijalankan, input pengguna disubstitusi ke dalam placeholder oleh driver database, yang memastikan bahwa input tersebut tidak dapat mengubah struktur kueri. Stored Procedures 🡺 kueri yang disimpan dan didefinisikan sebelumnya di database yang dapat dijalankan dengan mengeksekusi perintah sederhana. Karena kueri sudah didefinisikan sebelumnya, input pengguna tidak dapat mengubah struktur kueri. Pembatasan Hak Akses 🡺 Dengan membatasi hak akses yang dimiliki oleh setiap pengguna (atau aplikasi) pada database, Anda dapat meminimalkan kerusakan yang bisa dilakukan oleh serangan SQL Injection. Error Handling 🡺 Jangan menampilkan pesan error detail kepada pengguna. Informasi ini dapat digunakan oleh penyerang untuk memahami struktur database dan merancang serangan mereka. Web Application Firewall (WAF) 🡺 Sebuah WAF dapat membantu mendeteksi dan memblokir serangan SQL Injection. Banyak WAF memiliki aturan yang dirancang khusus untuk mengenali pola umum dalam serangan SQL Injection. Patching & Updating 🡺 Pastikan semua perangkat lunak (termasuk sistem manajemen basis data, server aplikasi, dan bahasa pemrograman) selalu diperbarui dengan patch keamanan terbaru.
Sebuah website memiliki halaman login yang meminta username dan password. Namun, pengembang membuat sistem login dengan menggabungkan input pengguna langsung ke dalam query SQL tanpa validasi yang baik. Akibatnya, penyerang memasukkan karakter atau perintah SQL ke kolom login sehingga database salah menafsirkan input tersebut sebagai bagian dari perintah SQL.
Dampak yang dapat terjadi: Penyerang dapat masuk ke sistem tanpa akun yang sah. Data pengguna dapat dibaca, diubah, atau dihapus. Informasi penting seperti data pelanggan dan transaksi dapat bocor. Website menjadi rentan terhadap pencurian data.
Penyebab: Input pengguna tidak divalidasi. Query SQL dibuat dengan menggabungkan input secara langsung. Tidak menggunakan mekanisme keamanan seperti prepared statement atau parameterized query.
Cara Pencegahan: Gunakan Prepared Statement/Parameterized Query. Validasi dan sanitasi semua input pengguna. Terapkan hak akses database seminimal mungkin (least privilege). Gunakan Web Application Firewall (WAF). Lakukan pengujian keamanan secara berkala.
Kesimpulan: SQL Injection adalah serangan yang memanfaatkan kelemahan pada aplikasi web untuk memanipulasi query SQL. Serangan ini dapat menyebabkan kebocoran data, perubahan data, hingga pengambilalihan sistem. Oleh karena itu, setiap aplikasi web harus menerapkan validasi input dan teknik pemrograman yang aman agar terhindar dari serangan SQL Injection.
Yoga Prihastono- Pertemuan 10: SQL Injection, Universitas Insan Pembangunan Indonesia, 2026.
← Kembali