SQL Injection Prevention
SQL Injection adalah salah satu vulnerability paling berbahaya dalam aplikasi web.
Apa itu SQL Injection?
SQL Injection terjadi ketika input user tidak divalidasi dengan benar sebelum digunakan dalam query database.
Prepared Statements
Selalu gunakan prepared statements - ini adalah cara paling efektif mencegah SQL injection.
PHP PDO
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);
PHP mysqli
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
Node.js
const [rows] = await pool.query(
'SELECT * FROM users WHERE id = ?',
[userId]
);
Input Validation
Selalu validasi semua input:
$validated = $request->validate([
'email' => 'required|email',
'id' => 'required|integer',
]);
ORM
Gunakan ORM yang otomatis menggunakan prepared statements:
// Laravel Eloquent
$user = User::find($id);
// Django
user = User.objects.get(id=user_id)
Best Practices
- Selalu gunakan prepared statements
- Validasi semua input
- Gunakan ORM jika memungkinkan
- Least privilege untuk database user
- Regular security audit