Tips Menghindari SQL Injection di PHP
Situs Web dinamis yang memerlukan database untuk menyimpan(record) ataupun mengambil/meminta(query) data perlu di amankan dari aksi - aksi kejahatan dunia cyber, salah satunya tindak kejahatan dengan penerapan SQL injection,
yaitu penyisipan Bad Query yang tidak diinginkan pada program atau
kode yang kita tulis. sehingga database memberikan respon balik yang
menimbulkan perubahan baik mendasar atau secara frontal pada program
atau kode yang di tulis. Situs Web sangat rentan dengan tindak
kejahatan menggunakan metode SQL Injection. Jika bad Query yang disisipkan, dan situs web kita memberikan respon balik sesuai dengan permintaan bad query, maka situs web tersebut telah menjadi korban Website Hacking yang dilakukan oleh hacker ataupun cracker. Untuk
menghindari SQL Injection, yang harus diprioritaskan adalah perbaikan
kode-kode SQL pada program dalam hal ini situs web dinamis yang telah
dibuat.
salah satu cara perbaikan yang diperlukan adalah beralih menggunakan PHP Data Object, bagi programmer web PHP yang terbiasa menggunakan ekstensi MySQL ataupun MySQLi untuk mengelola database,sudah saatnya beralih ke PHP Data Object(PDO). Apa itu PDO ?. PDO adalah ekstensi PHP yang berfungsi sebagai data-access abstraction layer , maksudnya apapun sistem database yang kita gunakan, fungsi atau method untuk meminta(query) maupun mengambil data tetap sama(php.net). sehingga kita dapat berpindah - pindah sistem database tanpa khawatir menata ulang kode SQL yang telah ditulis, yang diperlukan hanya lah mengubah string koneksi sesuai dengan sistem database yang kita gunakan.
berikut contoh penggunaan PDO dengan database MySQL:
//contoh koneksi
$username = 'username;
$passwd = 'password pilihan';
$host = 'nama host';
$dsn='mysql:host='.$host.';dbname=' . $dbname;
try {
$db = new PDO($dsn, $username, $passwd);
}
Contoh di atas adalah cara membuat koneksi ke database MySQL dengan PHP Data Object(PDO). untuk proses query(meminta) agar terhindar dari SQL Injection bisa kita gunakan prepared statement. Mari kita amati contoh kode berikut ini:
//Query data yang dilewatkan oleh URL dengan method $_GET
$id = isset($_GET['id'']) ? abs((int) $_GET['id']) : 0;
$sql = "SELECT id_kustomer, nama_lengkap, alamat, email, password, phone FROM kustomer
WHERE id = :id";
$k = $db -> prepared($sql);
$k -> bindParam(":id" $id);
$k -> execute();
kode diatas dapat menghindarkan proses bad query yang dilakukan hacker maupun cracker pada kasus SQL Injection.
salah satu cara perbaikan yang diperlukan adalah beralih menggunakan PHP Data Object, bagi programmer web PHP yang terbiasa menggunakan ekstensi MySQL ataupun MySQLi untuk mengelola database,sudah saatnya beralih ke PHP Data Object(PDO). Apa itu PDO ?. PDO adalah ekstensi PHP yang berfungsi sebagai data-access abstraction layer , maksudnya apapun sistem database yang kita gunakan, fungsi atau method untuk meminta(query) maupun mengambil data tetap sama(php.net). sehingga kita dapat berpindah - pindah sistem database tanpa khawatir menata ulang kode SQL yang telah ditulis, yang diperlukan hanya lah mengubah string koneksi sesuai dengan sistem database yang kita gunakan.
berikut contoh penggunaan PDO dengan database MySQL:
//contoh koneksi
$username = 'username;
$passwd = 'password pilihan';
$host = 'nama host';
$dsn='mysql:host='.$host.';dbname=' . $dbname;
try {
$db = new PDO($dsn, $username, $passwd);
}
Contoh di atas adalah cara membuat koneksi ke database MySQL dengan PHP Data Object(PDO). untuk proses query(meminta) agar terhindar dari SQL Injection bisa kita gunakan prepared statement. Mari kita amati contoh kode berikut ini:
//Query data yang dilewatkan oleh URL dengan method $_GET
$id = isset($_GET['id'']) ? abs((int) $_GET['id']) : 0;
$sql = "SELECT id_kustomer, nama_lengkap, alamat, email, password, phone FROM kustomer
WHERE id = :id";
$k = $db -> prepared($sql);
$k -> bindParam(":id" $id);
$k -> execute();
kode diatas dapat menghindarkan proses bad query yang dilakukan hacker maupun cracker pada kasus SQL Injection.
Out Of Topic Show Konversi KodeHide Konversi Kode Show EmoticonHide Emoticon