Bagaimana Cara Mencegah Sql Injection

Ryo Suwito - Contributor

: | : 25 February 2018 | Stack Answer

Bagaimana Cara Mencegah Sql Injection

Bagaimana Cara Mencegah Sql Injection

: | : 25 February 2018 | Stack Answer
Tags | MySQL | PDO | MySQLi | PostgreSQL

Ada banyak cara yang dapat kita gunakan untuk mencegah serangan SQLInjection, tergantung dari database yang kita pakai. Pada umumnya cara yang kita pakai adalah mensanitasi semua teks yang dimasukan oleh User melalui Form/ POST Request. Untuk itu kita harus memiliki semboyan "don't trust user's input".

Gunakan prepared statement. Persiapkan statement sebelum dikirim ke database server. Dengan begitu mustahil penyerang dapat memasukan Query berbahaya ke database. Untuk melakukan persiapan statement dapat menggunakan dua cara dibawah ini :

1. Menggunakan PDO (dapat digunakan untuk berbagai macam database)

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute(array('name' => $name));

foreach ($stmt as $row) {
    // do something with $row
}

2. Menggunakan MySQLi (hanya dapat digunakan untuk database MySQL)

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name); 

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}

3. Untuk database PostgreSQL, gunakan pg_prepare() dan pg_execute() dengan kode sama dengan 2 poin di atas.Selain itu perhatikan juga beberapa hal saat mengkoneksikan PHP ke database menggunakan PDO. Secara default PDO tidak menggunakan prepared statement. Untuk itu tambahkan kode berikut pada file PHP yang membuka koneksi dengan database:

$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass'); $dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Sumber
 

Share to your friends !


Powered by: