Mengamankan Database dari 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.Dan pada href seperti ini :$token = md5(md5($id).md5(‘acak’));
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