🔒

Memahami dan Mencegah SQL Injection

Mar 23, 2025

Catatan Kuliah: SQL Injection

Pengantar

  • SQL injection adalah salah satu kerentanan aplikasi web paling umum.
  • Berdasarkan laporan keamanan Baracode, 32% aplikasi web setidaknya memiliki satu kerentanan SQL injection.
  • Menurut BSSN, 73% laporan kerentanan yang diterima adalah SQL injection.
  • Termasuk ancaman nomor 3 menurut Open Web Application Security Project.

Apa Itu SQL Injection?

  • Teknik serangan yang memodifikasi perintah SQL sebelum dikirim ke database.
  • Terjadi karena data input tidak divalidasi dan langsung diproses dalam query SQL.

Contoh Praktis SQL Injection

  • Pada halaman login, jika input username dan password tidak divalidasi, bisa diserang.
  • Menggunakan payload (misalnya OR 1=1) untuk memaksa database mengirimkan nilai true.
  • Serangan ini dapat menyebabkan akses ke dashboard tanpa kredensial yang benar.

Jenis-Jenis SQL Injection

  1. In-band SQL Injection

    • Terdiri dari "Error-based" dan "Union-based" SQL injection.
    • Contoh: Melakukan eksploitasi saat aplikasi menampilkan pesan error.
  2. Inferential SQL Injection (Blind SQL Injection)

    • Tidak menampilkan pesan error.
    • Terbagi menjadi "Boolean-based" dan "Time-based" SQL injection.
  3. Out-of-band SQL Injection

    • Bergantung pada fitur database yang diaktifkan.
    • Contoh: Hasil dikirim ke server lain bukan ke aplikasi web.

Bahaya SQL Injection

  • Mengakses aplikasi tanpa kredensial valid (bypass login).
  • Memodifikasi atau menghapus data.
  • Mencuri informasi sensitif.
  • Melakukan perintah jarak jauh.
  • Menyamarkan identitas menggunakan akun pengguna resmi.

Studi Kasus

  • Tahun 2004: Pembobolan sistem KPU oleh "Xnuxer" menggunakan SQL injection.
  • Mengubah nama-nama partai dalam sistem.
  • Pelaku dihukum penjara.

Pencegahan

  1. Parameterized SQL Query

    • Teknik untuk membedakan SQL statement dan input data pengguna.
  2. Validasi Input Data

    • Menggunakan whitelist (menerima input valid) dan blacklist (menolak input tidak valid).
  3. Uji Aplikasi Berkala

    • Mengidentifikasi dan memperbaiki celah keamanan secara dini.
    • Lakukan "penetration testing" untuk memastikan keamanan aplikasi.

Penutup

  • Penting untuk memahami dan melakukan langkah-langkah pencegahan agar aplikasi tidak rentan terhadap SQL injection.
  • Video ini memberikan panduan lengkap mengenai SQL injection dan cara mengatasinya.