Materi
OWASP mendefinisikan kerentanan injeksi sebagai cacat aplikasi yang membuat input pengguna yang tidak tepercaya dikirim ke interpreter, seperti peramban, basis data, atau baris perintah, lalu sebagian input itu dijalankan sebagai perintah. Glosarium NIST menyebut injeksi SQL sebagai serangan yang mencari situs yang meneruskan input pengguna tanpa pengolahan memadai ke basis data. Kelas ini membahas pencegahannya, bukan cara melakukannya.
Cheat sheet SQL Injection Prevention OWASP menyebut empat pilihan pertahanan: pernyataan siap pakai dengan kueri berparameter (prepared statement), prosedur tersimpan yang dibangun dengan benar, validasi input dengan allowlist, dan meng-escape semua input — yang terakhir ditandai sangat tidak dianjurkan. Kueri berparameter memaksa seluruh kode SQL ditulis lebih dulu, lalu nilai pengguna dikirim terpisah sebagai data, sehingga tidak bisa berubah menjadi perintah.
Validasi input bekerja di dua tingkat. Validasi sintaksis memeriksa bentuk: tanggal berformat benar, nomor telepon hanya angka. Validasi semantik memeriksa kebenaran nilai dalam konteks bisnis: tanggal mulai sebelum tanggal selesai, harga dalam rentang wajar. OWASP menyebut denylist, yaitu menolak karakter yang dianggap berbahaya seperti tanda petik, sebagai pendekatan yang sangat cacat: mudah dilewati dan menolak input sah seperti nama Ma'ruf. Allowlist, yang hanya menerima bentuk yang diizinkan, adalah metode utama. Validasi di sisi server wajib, karena validasi JavaScript di peramban bisa dilewati; di peramban ia hanya membantu kenyamanan pengguna.
| Formulir izin cuti (contoh) | Aturan | Tingkat |
|---|---|---|
| Tanggal mulai | Berformat tanggal yang sah | Sintaksis |
| Jumlah hari | Bilangan bulat 1–12, tidak melebihi sisa cuti | Sintaksis lalu semantik |
| Jenis cuti | Salah satu dari daftar tetap: tahunan, sakit, melahirkan | Allowlist |