SQL Injection (SQLi) adalah salah satu jenis serangan siber yang paling terkenal dan berbahaya. Dengan memanfaatkan celah pada kode program atau sistem keamanan, penyerang bisa memasukkan perintah SQL berbahaya untuk mengakses, mengubah, atau menghapus data dari database.

Bayangkan kamu punya sebuah toko, dan di dalamnya ada gudang yang menyimpan semua barang berharga: stok barang, daftar pelanggan, dan catatan penjualan. Gudang ini punya pintu yang dijaga satpam. Tapi… satpamnya ini polos sekali. Kalau ada orang datang dan bilang “saya teman bos, biarkan saya masuk”, satpamnya langsung percaya tanpa tanya bukti.

Nah, di dunia digital, “gudang” itu adalah database yang menyimpan semua data penting. Satpam yang polos itu adalah aplikasi atau website yang tidak memeriksa masukan dari pengguna dengan benar. SQL Injection adalah trik “ngibulin” satpam itu dengan kata-kata khusus, sehingga penyerang bisa masuk dan mengambil, mengubah, atau menghapus isi gudang tanpa izin.

Walaupun teknik ini sudah dikenal sejak awal tahun 2000-an, SQL Injection masih menjadi ancaman serius hingga sekarang. Menurut data dari OWASP, SQLi termasuk dalam 10 besar kerentanan web paling umum di seluruh dunia.

Apa Itu SQL Injection?

Secara sederhana, SQL Injection adalah teknik peretasan yang memungkinkan penyerang menyisipkan kode SQL berbahaya ke dalam input aplikasi atau website. Kode ini kemudian dijalankan oleh server database, sehingga hacker bisa, mengambil data sensitif (seperti username, password, nomor kartu kredit), mengubah atau menghapus data, mengambil alih kontrol database atau mengakses fitur tersembunyi atau data yang seharusnya tidak bisa diakses.

Kenapa Namanya “SQL Injection”?

  • SQL adalah bahasa yang digunakan untuk berbicara dengan database.
  • Injection artinya menyisipkan sesuatu ke dalam alur normal supaya hasilnya berubah.

Jadi SQL Injection berarti menyisipkan perintah tambahan ke dalam query (permintaan) database supaya database melakukan hal yang sebenarnya tidak diinginkan pemiliknya.

Bagaimana Cara Kerjanya?

Website biasanya punya form login: kamu masukkan username dan password, lalu sistem mengecek apakah cocok di database. Contohnya:

Contoh sederhana query SQL normal:

Jika tidak ada validasi input, hacker bisa memasukkan:

Sehingga query menjadi:

Hasilnya: sistem menganggap login berhasil untuk semua pengguna.

Jenis-Jenis SQL Injection

Tidak semua SQL Injection sama. Ada beberapa trik berbeda, seperti:

  1. Error-Based
    Penyerang memancing error untuk melihat struktur database. Misalnya, pesan error bocorkan nama tabel.
  2. Union-Based
    Menambahkan UNION untuk mengambil data dari tabel lain.
  3. Boolean-Based
    Menanyakan “kalau kondisi ini benar, jawab A; kalau salah, jawab B” dan menebak isi database sedikit demi sedikit.
  4. Time-Based
    Meminta database menunggu beberapa detik untuk memastikan kondisi tertentu benar atau salah.
  5. Out-of-Band
    Mengambil data melalui jalur lain, misalnya lewat DNS atau request HTTP tambahan.

Bagaimana Cara Mencegah?

Tidak perlu jadi jenius IT untuk tahu cara melindungi sistem. Beberapa langkah pencegahan:

  1. Gunakan Prepared Statements
    Pisahkan data input dari query supaya tidak bisa diubah jadi perintah.
  2. Validasi Input
    Pastikan data yang masuk sesuai format (angka, huruf, email valid).
  3. Batasi Hak Akses Database
    Jangan beri semua izin pada akun database. Misalnya, hanya boleh baca data, tidak boleh hapus.
  4. Jangan Tampilkan Error Detail
    Pesan error ke pengguna harus umum, detailnya disimpan di log internal.
  5. Gunakan Web Application Firewall (WAF)
    WAF bisa memblokir pola serangan SQL Injection.
  6. Update Rutin
    Perbarui sistem, framework, dan plugin.
  7. Tes Keamanan Berkala
    Gunakan pentest atau tools seperti sqlmap untuk cek celah.

Kesimpulan

SQL Injection adalah trik lama, tapi efeknya tetap bisa menghancurkan. Bayangkan saja: cukup satu celah kecil, penyerang bisa masuk dan mengambil semua isi “gudang” data. Dari kasus KPU hingga Tokopedia, kita sudah lihat sendiri dampaknya.

Pesannya sederhana: jangan biarkan satpam digital kamu mudah dibohongi. Periksa semua pintu masuk, pasang kunci yang kuat, dan selalu waspada.

Keamanan memang tidak bisa menjamin 100% bebas serangan, tapi dengan langkah pencegahan yang benar, kita bisa membuat penyerang berpikir dua kali sebelum mencoba. Keamanan bukanlah pilihan tambahan—ia adalah pondasi.

Tulisan berikutnya kita akan membahas bagaimana step by step melakukan serangan SQL Injection.