Vulnarena

🛠️ SQL Injection

SQL Injection (SQLi) adalah teknik serangan di mana penyerang bisa memasukkan perintah SQL berbahaya melalui input user. Tujuannya untuk mencuri, merusak, atau memanipulasi data di database.

💥 Contoh Kode Berbahaya (Rentan SQLi)

<?php
// Baris 1: Mengambil input dari URL parameter
$id = $_GET['id'];

// Baris 2: Query SQL tanpa filter apapun
$query = "SELECT * FROM users WHERE id = '$id'";

// Baris 3: Jalankan query (rentan SQL Injection!)
$result = mysqli_query($conn, $query);
?>
    

🔎 Penjelasan:
- Baris 1: Ambil input user (bisa diketik di URL).
- Baris 2: Query dibuat langsung pakai input user tanpa filter.
- Baris 3: Query dijalankan langsung ke database. Ini sangat berbahaya!

💡 Contoh Serangan SQL Injection

?id=1' OR '1'='1
    

🔎 Penjelasan: Query ini akan selalu benar karena '1'='1' selalu true, sehingga semua data ditampilkan.

🛡️ Cara Mencegah SQLi

Beberapa langkah penting (dengan contoh kode yang aman!):

1️⃣ Menggunakan Prepared Statement (PHP - MySQLi)

<?php
// Baris 1: Siapkan statement SQL pakai placeholder ?
$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");

// Baris 2: Bind input user (dianggap teks, bukan perintah SQL!)
$stmt->bind_param("i", $id);

// Baris 3: Jalankan query yang aman
$stmt->execute();
?>
    

🔎 Penjelasan:
- Baris 1: Querynya pakai tanda tanya (?) supaya input user tidak langsung masuk ke query.
- Baris 2: bind_param() memastikan input user hanya diisi sebagai data.
- Baris 3: Query dijalankan dengan aman (tidak ada celah SQLi!).

2️⃣ Validasi & Batasi Input

// Contoh JavaScript: pastikan input hanya angka
const idInput = document.querySelector('#id').value;
if (!/^\d+$/.test(idInput)) {
  alert('Input tidak valid! Harus angka.');
}
    

🔎 Penjelasan: Memastikan input user hanya angka (untuk id), jadi tidak ada script atau perintah SQL yang lolos.

3️⃣ Hak Akses Minimum (Database)

🔎 Penjelasan: Buat user database dengan hak akses minimal. Jangan gunakan akun admin untuk semua query supaya kalau ada SQLi, dampaknya terbatas.

🧠 Studi Kasus & Referensi