KuloDev
1 Hari
0 XP
intermediate35 menitModul: 01-owasp-top-vulnerabilities

SQL Injection & Pertahanan Parameterized Queries

Pahami anatomi kerentanan SQL Injection, mengapa penggabungan string query mentah sangat berbahaya, dan cara menggunakan Parameterized Queries / Prepared Statements untuk kekebalan total.

1. Anatomi SQL Injection

**SQL Injection (SQLi)** adalah salah satu kerentanan tertua namun paling merusak dalam sejarah web. Celah ini terjadi ketika input dari pengguna yang tidak divalidasi digabungkan langsung (*string concatenation*) ke dalam string query SQL yang dieksekusi database.

example.js
javascript
1// ❌ SANGAT BERBAHAYA: String Concatenation Langsung
2const query = "SELECT * FROM users WHERE email = '" + userEmail + "' AND password = '" + pass + "'";
3
4// Jika penyerang memasukkan input: admin@kulo.dev' OR '1'='1
5// Query yang terbentuk menjadi:
6// SELECT * FROM users WHERE email = 'admin@kulo.dev' OR '1'='1' AND password = '...'
7// Hasilnya: Penyerang bisa login sebagai admin tanpa mengetahui password!

2. Mengapa Parameterized Queries Menghilangkan Celah 100%?

Dengan **Parameterized Queries (Prepared Statements)**, query dikirim ke database dalam dua tahap terpisah:

example.js
javascript
1// ✅ AMAN: Menggunakan Tagged Template Literals / Parameterized Query
2import sql from '@/lib/db';
3
4const user = await sql`
5 SELECT id, email, role
6 FROM users
7 WHERE email = ${userEmail}
8`;

Selesaikan Materi Ini?

Dapatkan +25 XP dan simpan progres belajarmu.