Lewati ke konten utama

WEB APP SECURITY

SQL Injection: Pengertian, Ciri, dan Cara Mencegahnya

SQL injection adalah celah keamanan yang muncul ketika aplikasi menyusun input pengguna langsung menjadi perintah SQL, sehingga basis data menjalankan teks yang seharusnya diperlakukan sebagai data biasa. Akibatnya, data bisa terbaca, berubah, atau terhapus oleh pihak yang tidak berhak. Artikel ini menjelaskan cara kerjanya secara konseptual, tanda-tanda yang bisa Anda kenali, dan langkah pencegahan yang terbukti efektif.

SQL injection adalah celah keamanan yang muncul ketika aplikasi menyusun input pengguna langsung menjadi perintah SQL, sehingga basis data menjalankan teks yang seharusnya diperlakukan sebagai data biasa. Akibatnya, data bisa terbaca, berubah, atau terhapus oleh pihak yang tidak berhak. Artikel ini menjelaskan cara kerjanya secara konseptual, tanda-tanda yang bisa Anda kenali, dan langkah pencegahan yang terbukti efektif.

Apa Itu SQL Injection dan Mengapa Berbahaya?

Hampir setiap aplikasi web menyimpan data di basis data relasional seperti MySQL, PostgreSQL, atau SQL Server, dan berbicara dengannya lewat Structured Query Language (SQL). Menurut OWASP, SQL injection adalah penyisipan perintah SQL melalui data masukan dari klien ke aplikasi. Karena SQL tidak memisahkan data dan perintah secara tegas, basis data bisa menjalankan teks yang diselipkan penyerang bila aplikasi menggabungkannya mentah-mentah ke dalam query.

Dampaknya luas. OWASP mencatat kemungkinan bocornya data sensitif, login yang dapat dilewati bila pemeriksaan kredensial memakai SQL yang cacat, perubahan atau penghapusan data, hingga pengambilalihan server basis data. Tingkat keparahan sebenarnya bergantung pada hak akses akun basis data yang dipakai aplikasi dan pertahanan lain di sekelilingnya.

Kelas kerentanan ini juga masih besar. Pada OWASP Top 10 edisi 2025, kategori Injection berada di peringkat kelima (A05:2025) dan mencakup lebih dari 14 ribu CVE untuk SQL injection serta lebih dari 30 ribu untuk cross-site scripting. Pembahasan lengkap daftar tersebut ada di artikel pengertian OWASP dan OWASP Top 10.

Bagaimana SQL Injection Terjadi?

Akar masalahnya selalu sama: aplikasi membangun query dengan menyambung string, misalnya menempelkan isi kolom login atau kotak pencarian ke dalam teks perintah SQL. Struktur query yang dimaksud pengembang lalu bisa berubah karena input yang dibuat khusus. OWASP menggambarkan beberapa pola umum, yaitu mengubah kondisi sehingga query mengembalikan lebih banyak baris dari seharusnya, memotong sisa query dengan karakter komentar, dan pada basis data tertentu menambahkan perintah kedua setelah titik koma.

Celah ini bukan hanya milik form login. Parameter URL, kolom pencarian, filter dan pengurutan, cookie, serta header HTTP semuanya berpotensi menjadi pintu masuk bila nilainya berakhir di sebuah query tanpa pengikatan parameter. Stored procedure pun tidak otomatis aman bila di dalamnya ada penyambungan string.

Jenis-Jenis SQL Injection

Praktisi biasanya membagi serangan ini berdasarkan cara hasilnya terlihat oleh penyerang:

  • In-band: hasil muncul di saluran yang sama dengan permintaan, misalnya data tampil di halaman atau pesan error basis data bocor ke layar.
  • Blind (buta): aplikasi tidak menampilkan data atau error, tetapi perbedaan perilaku, seperti isi halaman atau waktu respons, tetap membocorkan informasi sedikit demi sedikit.
  • Out-of-band: data dikirim lewat kanal lain, misalnya permintaan jaringan dari server basis data, dan hanya mungkin bila konfigurasi basis data mengizinkannya.

Perbedaan jenis ini penting bagi tim defensif. Blind injection tidak meninggalkan pesan error yang mencolok, sehingga deteksi harus bergantung pada log dan pola lalu lintas, bukan sekadar menunggu keluhan pengguna.

Ciri-Ciri Aplikasi Terkena SQL Injection

Tidak ada satu gejala yang pasti, tetapi tanda berikut layak diselidiki:

  • Pesan error basis data, seperti kesalahan sintaks SQL, tampil di halaman atau tercatat setelah ada input tak lazim.
  • Log aplikasi atau WAF memperlihatkan parameter berisi tanda kutip, karakter komentar, atau kata kunci SQL dalam jumlah tidak wajar.
  • Respons melambat atau basis data tiba-tiba sibuk tanpa lonjakan pengguna yang masuk akal.
  • Hasil pencarian atau daftar data tidak sesuai dengan kata kunci, atau muncul akun dan konten baru yang tidak dibuat admin.
  • Ada kueri bervolume besar yang menarik banyak baris dari tabel sensitif oleh akun aplikasi.

Menemukan celah ini secara proaktif adalah bagian dari vulnerability assessment dan uji penetrasi. Pengujian harus dilakukan hanya pada sistem milik Anda sendiri atau yang Anda miliki izin tertulisnya, karena mengakses sistem elektronik orang lain tanpa hak melanggar Pasal 332 KUHP tentang akses ilegal (sebelumnya Pasal 30 UU ITE).

Cara Mencegah SQL Injection

OWASP SQL Injection Prevention Cheat Sheet menempatkan beberapa pertahanan utama, dan semuanya bertumpu pada satu prinsip: jangan pernah mencampur perintah dengan data.

1. Gunakan parameterized query (prepared statement)

Struktur SQL ditulis tetap, sedangkan nilai dari pengguna diikat lewat API basis data. Nilai itu selalu diperlakukan sebagai data. Contoh bentuknya:

SELECT id, nama FROM pengguna WHERE email = ?

Tanda tanya di atas diisi lewat pengikatan parameter, bukan lewat penyambungan string. ORM juga aman selama ia mengikat nilai dengan cara yang sama, dan menjadi rawan bila Anda menyisipkan potongan SQL mentah ke dalamnya.

2. Validasi dengan allow-list untuk bagian yang tidak bisa diparameterisasi

Nama tabel, nama kolom, dan kata kunci seperti ASC atau DESC tidak dapat diikat sebagai parameter. Petakan pilihan pengguna ke nilai tetap yang sudah Anda tentukan di aplikasi, lalu tolak sisanya.

3. Terapkan prinsip hak akses minimum

Akun basis data aplikasi tidak boleh bertipe DBA atau admin. Beri satu akun per aplikasi, batasi hak ubah dan hapus seperlunya. Ini tidak mencegah injeksi, tetapi memperkecil kerusakan bila celah tetap lolos.

4. Lapisan tambahan

  • Jangan tampilkan pesan error basis data ke pengguna; catat di log internal saja.
  • Escaping manual sangat tidak disarankan oleh OWASP karena bergantung pada dialek SQL dan mudah keliru.
  • Gunakan Web Application Firewall sebagai lapisan tambahan, bukan pengganti perbaikan kode.
  • Perbarui framework, plugin, dan pustaka akses data secara rutin, dan uji kode dengan analisis statis serta pengujian keamanan berkala.

Baca juga: Burp Suite: Pengertian, Fitur, dan Perbedaan Community dan Professional.

Pertanyaan yang Sering Diajukan

Apakah ORM otomatis kebal dari SQL injection?

Tidak otomatis. ORM aman bila ia mengikat nilai sebagai parameter. Fitur query mentah atau penyambungan string di dalam ORM tetap membuka celah yang sama.

Apakah WAF cukup untuk menghentikan SQL injection?

WAF membantu memblokir pola serangan yang dikenal, tetapi bukan perbaikan akar masalah. Kode yang menyambung string tetap rentan dan penyerang terus mencari cara melewati aturan filter.

Apakah aplikasi kecil atau website pribadi juga bisa menjadi target?

Bisa. Pemindaian otomatis menyasar siapa saja yang menjalankan kode atau plugin rentan, tanpa memandang ukuran situs.

Bagaimana cara belajar menguji SQL injection secara legal?

Gunakan lab milik sendiri atau platform latihan yang memang menyediakan target untuk diserang, dan jangan pernah mencoba pada sistem pihak lain tanpa izin tertulis.

Kesimpulan

SQL injection bertahan puluhan tahun karena penyebabnya sederhana: query yang dirakit dari input mentah. Obatnya pun sederhana dan sudah mapan, yaitu parameterized query, allow-list untuk identifier, hak akses basis data minimum, dan penanganan error yang tidak membocorkan detail. Jika Anda ingin mempelajari keamanan aplikasi web secara terstruktur dan legal, lihat program kursus Linuxhackingid. Untuk memahami di mana celah semacam ini berada dalam proses pengujian, baca juga pengertian penetration testing.

Setiap artikel ditinjau pimpinan praktik yang menangani pekerjaannya sebelum terbit.

Semua wawasan

ARTIKEL LAINNYA

terbaru dulu
WEB APP SECURITY
October 29, 20267 baca

Cross-Site Scripting (XSS): Pengertian, Jenis, dan Cara Mencegahnya

XSS atau cross-site scripting adalah celah keamanan yang membuat sebuah situs menampilkan skrip buatan pihak lain seolah-olah skrip itu bagian dari situs tersebut. Skrip itu kemudian berjalan di browser pengunjung dengan hak yang sama seperti kode resmi situs. Berikut pengertian, jenis, dan langkah pencegahan XSS yang dapat langsung diterapkan oleh pengembang maupun pemilik situs.

Ditulis oleh Muhammad Abdul Malik & Tim AppSec Linuxhackingid | Spesialis Keamanan Aplikasi Web & Jaringan
WEB APP SECURITY
October 29, 20267 baca

Keamanan API: Risiko Umum dan Cara Mengamankannya

Keamanan API semakin penting karena hampir semua aplikasi modern, dari aplikasi seluler sampai integrasi antarlayanan, bertukar data lewat API. Berbeda dengan halaman web yang dilihat manusia, API langsung membuka data dan fungsi bisnis ke siapa pun yang bisa memanggilnya. Artikel ini membahas risiko yang paling umum menurut OWASP dan kontrol praktis untuk mengamankannya.

Ditulis oleh Muhammad Abdul Malik & Tim AppSec Linuxhackingid | Spesialis Keamanan Aplikasi Web & Jaringan
WEB APP SECURITY
October 29, 20267 baca

Cara Mengamankan Website WordPress

Keamanan WordPress menjadi perhatian utama karena platform ini sangat luas dipakai dan karenanya terus diincar penyerang. Kabar baiknya, inti WordPress relatif jarang bermasalah; sumber risiko terbesar justru plugin, akun pengguna, dan konfigurasi hosting yang bisa Anda kendalikan sendiri. Panduan ini merangkum langkah pengamanan yang praktis, dari dasar sampai pemantauan.

Ditulis oleh Muhammad Abdul Malik & Tim AppSec Linuxhackingid | Spesialis Keamanan Aplikasi Web & Jaringan

Dapatkan advisory berikutnya lebih dulu. Tanpa ringkasan, tanpa kebisingan.

Satu email ketika ada sesuatu yang benar-benar penting. Atau ikuti kanal komunitas kami.

Gabung Telegram

LANGKAH BERIKUTNYA

Bicara dengan operator, bukan meja penjualan.

Panggilan scoping singkat, lalu ruang lingkup, jadwal, dan biaya tertulis dalam 2 hari kerja.

METODOLOGI & KEPATUHAN
ISO 27001PCI-DSSOJKUU PDP