SQL Injection Prevention — Security

Mencegah SQL Injection Ada beberapa teknik untuk mencegah SQL Injection. Teknik utama dan paling efektif adalah parameterized queries (prepared statements). 1.

Mencegah SQL Injection

Ada beberapa teknik untuk mencegah SQL Injection. Teknik utama dan paling efektif adalah parameterized queries (prepared statements).

1. Parameterized Queries (Prepared Statements)

Memisahkan struktur query dari data input. Database engine tahu mana yang query dan mana yang data.

// PHP dengan PDO
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->execute([
    ":username" => $username,
    ":password" => $password
]);

// Node.js dengan mysql2
const [rows] = await connection.execute(
    "SELECT * FROM users WHERE username = ? AND password = ?",
    [username, password]
);

2. ORM (Object-Relational Mapping)

Framework ORM seperti Eloquent (Laravel), Prisma, atau Sequelize secara otomatis menggunakan prepared statements:

// Laravel Eloquent — aman secara default
$user = User::where("username", $username)
    ->where("password", $hashedPassword)
    ->first();

// Prisma (Node.js) — aman secara default
const user = await prisma.user.findFirst({
    where: { username, password: hashedPassword }
});

3. Input Validation

Validasi tipe dan format input sebelum diproses:

// Validasi bahwa ID harus berupa angka
$id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);
if ($id === false) {
    http_response_code(400);
    die("Invalid ID");
}

Hal yang TIDAK Cukup

Best Practices

Yang akan kamu pelajari