PHP MySQL Prepared Statement: Query yang Aman

Prepared statement PHP adalah teknik menjalankan query database dengan memisahkan perintah SQL dari data yang dimasukkan. Ini bukan sekadar praktik yang baik — ini adalah pertahanan utama melawan serangan SQL injection, salah satu celah keamanan paling berbahaya di aplikasi web.

Masalah yang Dipecahkan

Menggabungkan input pengguna langsung ke query, seperti "SELECT * FROM user WHERE nama = '$input'", sangat berbahaya. Penyerang bisa memasukkan kode SQL berbahaya melalui input tersebut. Prepared statement menutup celah ini sepenuhnya.

Cara Kerja Prepared Statement

Prosesnya terdiri dari tiga langkah: prepare (kirim template query dengan placeholder ?), bind (isi placeholder dengan data), dan execute (jalankan):

<?php
$stmt = $koneksi->prepare("SELECT * FROM pengguna WHERE email = ?");
$stmt->bind_param("s", $email);

$email = $_POST["email"];
$stmt->execute();

$hasil = $stmt->get_result();
$data = $hasil->fetch_assoc();
?>

Karena database menerima struktur query lebih dulu (dengan ?), lalu datanya secara terpisah, data tidak akan pernah dieksekusi sebagai perintah.

Tipe pada bind_param

HurufTipe Data
sString (teks)
iInteger (angka bulat)
dDouble (desimal)
bBlob (data biner)

Contoh bind_param("sid", $nama, $umur, $saldo) berarti string, integer, lalu double.

Prepared Statement di PDO

PDO menawarkan sintaks yang lebih ringkas:

<?php
$stmt = $pdo->prepare("SELECT * FROM pengguna WHERE email = ?");
$stmt->execute([$email]);
$data = $stmt->fetchAll();
?>

Kesimpulan

Jadikan prepared statement PHP kebiasaan untuk setiap query yang melibatkan input pengguna, baik itu SELECT, INSERT, UPDATE, maupun DELETE. Ini adalah langkah keamanan paling penting saat bekerja dengan database.

Referensi: untuk penjelasan lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *