Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Cara Mencegah injeksi SQL di PHP menggunakan Pernyataan yang Disiapkan

Injeksi
SQL adalah bentuk serangan umum yang menargetkan aplikasi web yang menggunakan database SQL. Dalam jenis serangan ini, penyerang mengeksploitasi kerentanan dalam kode aplikasi untuk menyuntikkan pernyataan SQL berbahaya yang dapat membahayakan database dan berpotensi membuka informasi sensitif. PHP adalah bahasa populer untuk pengembangan web dan umumnya digunakan dengan database SQL. Salah satu cara untuk mencegah injeksi SQL di PHP adalah dengan menggunakan pernyataan siap.
Advertisement
Pernyataan siap adalah fitur keamanan di PHP yang memungkinkan pengembang untuk menentukan kueri dengan placeholder untuk input pengguna. Placeholder kemudian diganti dengan nilai input pengguna saat runtime, yang secara otomatis di-escape untuk mencegah serangan injeksi SQL. Pernyataan yang disiapkan menyediakan cara untuk memisahkan perintah SQL dari input pengguna dan dapat digunakan dengan berbagai database termasuk MySQL, PostgreSQL, dan Oracle.

Berikut adalah beberapa langkah yang dapat Anda ambil untuk mencegah injeksi SQL di PHP menggunakan pernyataan yang disiapkan:
Langkah 1: Pahami Injeksi SQL

Langkah pertama dalam mencegah injeksi SQL adalah memahami cara kerjanya. Injeksi SQL adalah jenis serangan di mana penyerang mengirimkan masukan berbahaya ke aplikasi yang tidak dibersihkan dengan benar. Input ini dapat digunakan untuk mengeksekusi perintah SQL arbitrer atau mengubah kueri yang ada. Hasilnya adalah penyerang dapat memperoleh akses tidak sah ke database dan berpotensi mencuri atau memodifikasi data sensitif.
Langkah 2: Gunakan pernyataan yang disiapkan

Pernyataan yang disiapkan menyediakan cara untuk mencegah injeksi SQL dengan memisahkan perintah SQL dari masukan pengguna. Hal ini dilakukan dengan mendefinisikan kueri dengan placeholder untuk input pengguna, lalu mengikat placeholder tersebut ke nilai input saat runtime. Pernyataan yang disiapkan dapat digunakan dengan ekstensi PDO dan MySQLi di PHP.

Misalnya, inilah cara menggunakan pernyataan yang disiapkan dengan PDO:


$pdo = new PDO(`mysql:host=localhost;dbname=test`, $username, $password ); $stmt = $pdo->prepare(`SELECT * FROM users WHERE username = :username`); $stmt->execute(array(`username` => $username));123$pdo=newPDO(`mysql:host=localhost;dbname=test`,$username,$password);$stmt=$pdo-> prep(`SELECT * FROM users WHERE username = :username`);$stmt->execute(array(`username`=>$username));


Dalam contoh ini, kueri berisi placeholder untuk masukan nama pengguna. Metode eksekusi() dipanggil dengan array nilai input, yang secara otomatis lolos untuk mencegah injeksi SQL.

Berikut cara menggunakan pernyataan yang disiapkan dengan MySQLi:


$mysqli = new mysqli("localhost", "username", "password" , "database"); $stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute();1234$mysqli=newmysqli("localhost","username","password","database");$stmt=$mysqli->prepare("SELECT * FROM users WHERE username = ?" );$stmt->bind_param("s",$username);$stmt->execute();


Dalam contoh ini, kueri berisi tanda tanya sebagai placeholder untuk masukan nama pengguna. Metode bind_param() dipanggil untuk mengikat nilai input ke placeholder. Argumen "s" menentukan bahwa input adalah string.
Langkah 3: Sanitasi input pengguna

Bahkan dengan pernyataan yang telah disiapkan, masih penting untuk membersihkan input pengguna. Membersihkan input berarti memvalidasi dan membersihkannya untuk memastikannya memenuhi format yang diharapkan dan tidak mengandung karakter atau skrip berbahaya.

Dalam PHP, fungsi filter_var() dapat digunakan untuk membersihkan input. Misalnya, inilah cara membersihkan input nama pengguna:


$username = filter_var($_POST[`username`], FILTER_SANITIZE_STRING);1$username=filter_var($_POST[`username`],FILTER_SANITIZE_STRING);


Filter FILTER_SANITIZE_STRING menghapus semua Tag HTML dan karakter khusus dari input.
Langkah 4: Batasi hak istimewa

Untuk lebih jauh mencegah injeksi SQL, penting untuk membatasi hak istimewa pengguna basis data. Pengguna basis data hanya boleh memiliki hak istimewa minimum yang diperlukan untuk melakukan tugas mereka. Ini membantu membatasi kerusakan yang dapat terjadi jika terjadi serangan injeksi SQL.
Langkah 5: Selalu perbarui perangkat lunak

Terakhir, penting untuk selalu memperbarui semua perangkat lunak. Ini termasuk aplikasi web dan perangkat lunak basis data. Pembaruan sering menyertakan tambalan keamanan yang mengatasi kerentanan, termasuk yang dapat menyebabkan serangan injeksi SQL. KesimpulanKesimpulan

Kesimpulannya, injeksi SQL adalah ancaman serius bagi aplikasi web yang menggunakan database SQL. Menggunakan pernyataan yang disiapkan adalah cara yang efektif untuk mencegah injeksi SQL di PHP, karena memisahkan perintah SQL dari input pengguna dan secara otomatis lolos dari nilai input. Namun, tetap penting untuk membersihkan input pengguna, membatasi hak istimewa, dan terus memperbarui perangkat lunak untuk mencegah serangan lebih lanjut.

Dengan mengikuti langkah-langkah ini, pengembang dapat melindungi aplikasi web dan database mereka dengan lebih baik dari serangan injeksi SQL. Penting untuk mengambil pendekatan proaktif terhadap keamanan dan tetap mendapat informasi tentang ancaman dan kerentanan baru. Audit dan pengujian keamanan rutin dapat membantu mengidentifikasi dan mengatasi potensi kelemahan sebelum dapat dieksploitasi.



Referensi tecadmin.comArtikel Diperbarui pada: March 30, 2023
Kontributor: Syauqi Wiryahasana
Model: Haifa Manik Intani
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically