Mencegah SQL Injection Pada Halaman Website

source code dapat di copy dengan mengarahkan cursor ke area source code kemudian mengklik tombol dengan icon kertas putih dan <>
Keamanan Sistem Informasi menjadi sangat penting mengingat rentannya serangan-serangan yang terjadi pada sejumlah halaman website. sebut saja situs presiden SBY yang beberapa tahun yang lalu berhasil di hack, situs KPU yang berhasil dilumpuhkan hanya dengan teknik SQL Injection oleh karena kita yang berprofesi sebagai website programming harus sedari dini mangantisipasi masalah ini.

Serangan-serangan yang umum diluncurkan pada aplikasi website tidak jauh dari variasi SQL Injection. Teknik SQL Injection sendiri adalah sebuah metode serangan pada halaman website yang memanfaatkan inputan-inputan yang tidak difilter dengan baik sehingga memungkinkan seorang attacker untuk memasukan perintah query secara illegal. suatu misal seperti URL website seperti berikut

htpp://www.target.com/?halaman=artikel&id=10

Pada URL diatas kita sudah bisa membaca bahwa user yang mengakses URL tersebut sedang melihat isi dari tabel artikel dengan id=10. Untuk mengujinya kita dapat menambahkan tanda petik diakhir angka 10 menjadi 10' atau menambahkan tanda minus -10 dan jika anda mendapati halaman website tersebut error maka bisa dipastikan website tersebut VULN terhadap serangan SQLI. Contoh script yang menjalankan URL diatas adalah sebagai berikut

<title>ISI Tabel Artikel Berdasarkan ID</title>

<?php  
 include "koneksi.php";
 // Ambil id dari URL
 $id=$_GET['id'];

 // Tampilkan Artikel
 $display = mysql_query("SELECT * FROM artikel where id = '$id'");
 while ($data=mysql_fetch_array($display)){ 
 $tampil = $data['isi'];
 echo "<table><tr>";
 echo '<td>'.$tampil.'</td>';
 echo "</tr><table>";
 }
?>

Pada source code diatas terlihat jelas bahwa ID dari URL diambil apa adanya maka jelas saja akan terjadi error jika user misalkan sedikit usil mengganti ID dengan karakter aneh seperti yang saya jelaskan diatas.

Solusi yang saya gunakan untuk serangan SQL Injection seperti diatas adalah dengan menambahkan fungsi untuk memfilter inputan yang diambil dari URL yaitu mysql_escape_string sehingga jika diterapkan pada script diatas kurang lebih hasilnya akan seperti berikut
<title>ISI Tabel Artikel Berdasarkan ID</title>

<?php  
 include "koneksi.php";
 // Ambil id dari URL
 $id=mysql_escape_string($_GET['id']);

 // Tampilkan Artikel
 $display = mysql_query("SELECT * FROM artikel where id = '$id'");
 while ($data=mysql_fetch_array($display)){ 
 $tampil = $data['isi'];
 echo "<table><tr>";
 echo '<td>'.$tampil.'</td>';
 echo "</tr><table>";
 }
?>

Selain dengan cara diatas sebenarnya anda juga bisa membuat fungsi sendiri untuk melakukan filter inputan semisal dengan menggunakan teknik Regular Expresi dan semacamnya. 
source code dapat di copy dengan mengarahkan cursor ke area source code kemudian mengklik tombol dengan icon kertas putih dan <>

Share this

Related Posts

Previous
Next Post »

bantu kami untuk lebih baik; jika ada hal yang kurang jelas atau broken link silahkan masukan komentar anda kami akan segera menanggapi dan memperbaikinya. login ke akun gmail anda untuk menampilkan form komentar.