Welcome

Welcome, thanks to look my blog

Tuesday, 1 April 2014

Mengamankan Database dari SQL Injection

Mengamankan Database dari SQL Injection

Mengamankan Database dari SQL Injection
Kemaren ada sebuah berita di group facebook bahwasannya banyak hacker indonesia bisa memasuki sistem database kebanyakan menggunakan sistem SQL Injection.

SQL Injection adalah salah satu teknik memasuki database dengan cara mengedit dari vareabel get pada url untuk bisa masuk ke sistem database sebuah website. Contohnya seperti di bawah ini :
http://alamatwebsite.com/dataku?id=8
Kebanyakan pada url diatas menggunakan get id atau $id = $_GET['id'] dan database yang di gunakan untuk mengambil datanya seperti di bawah ini.
SELECT * FROM data WHERE id= $id
Penulisan query diatas itu sangat rentan sekali dengan injeksi database. Terus seperti apa agar tidak terjadi injeksi database ?
Agar tidak terjadi injeksi database maka kita ubah vareabel id menjadi absolute integer dengan mengubah sintaknya seperti di bawah ini.
$id = abs((int)$_GET['id']);
Fungsi abs() digunakan untuk menghilangkan fungsi yang lain. Kebanyakan hacker biasanya menambahi ‘-’ pada id nya jadi dengan adanya fungsi abs() tidak akan bisa  dan akan tetap terbaca id tersebut.
Cara kedua yaitu jika halaman itu tidak penting maka gunakan enkripsi seperti md5 atau yang lainnya sehingga setelah url ada sebuah token acak seperti ketika anda membuka detail status facebook. Awalnya seperti di bawah ini .
http://alamatwebsite.com/dataku?id=8
Ketika di enkripsi maka akan menjadi seperti di bawah ini.
http://alamatwebsite.com/dataku?id=8$token=wgehwgev27232v32h3g2g3h2gh32v3h2gh3gh23g2hg3
Caranya seperti di bawah ini.
$token = md5(md5($id).md5(‘acak’));
Dan pada href seperti ini :
dataku?$id&token=$token
sekarang pada halaman tampil id kita tambahkan pengecekan apakah id diganti/diinject manual oleh user dengan cara :
$id=$_GET['id'];
$token=$_GET['token'];
$cek=md5(md5($id).md5(‘acak’));
if($token==$cek){
}
else{
   echo “Terdeteksi”;
}

No comments:

Post a Comment