Ads 468x60px

Sunday, June 17, 2012

Mengatasi/Mencegah SQL Injection pada PHP

Mengatasi/Mencegah SQL Injection pada PHP
kayaknya kurang bertnggung jawab jika uda posting tentang Cara Hacking Website Dengan Teknik SQL Injection
tapi gak bahas cara untuk menanggulangi / mencegah hacking dengan SQL Injection.........
"SQL Injection" yaitu trik hacking dengan cara mengedit isi dari variabel get yang ada di url untuk melakukan penetrasi kedalam database.. teknik SQL Injection juga bsa di lakukan pada form login dengan membaypass atau melewati autentikasi login dengan syntak SQL..
 
 okeh ini dia trik nya..
 
1. Dengan cara menjadikan variabel get menjadi absolute integer
    Penjelasan:
    Biasanya para hacker melakukan penetrasi terhadap variabel id yang kita letakkan pada url..
  
    Contoh:
    pada url http://webkamu/berita.php?id=1
    ketika akan membaca isi dari variabel id biasanya kita menggunakan syntak
   
    $id = $_GET['id'];
    jadi setiap isi dari id pada url akan disimpan pada variable $id..
   
    dan untuk query ke database :
    "SELECT * FROM tbl_berita WHERE id='$id'"
 
     nah melalui variabel $id ini lah para hacker menggunakan teknik SQL Injection, dengan   memasukkan perintah2 SQL yang dapat mengeksploitasi database..
 
    Solusinya:
    kita buat id menjadi absolute integer dengan mengubah sintaks pembacaan variabel get id menjadi:
    $id = abs((int)$_GET['id']);
 
    fungsi abs() digunakan untuk menghilangkan tipe data minus dan int digunakan untuk mengubah tipe data menjadi integer (hanya mengijinkan tipe data integer). jadi ketika variabel id pada url di rubah secara manual dan diisi dengan sintak SQL yang berupa string maka tetap dibaca 0.  
 
 
2. Dengan menambahkan variabel get berisi enkripsi md5 yg divariasi pada url
     jika awal url adalah
     http://webkamu/berita.php?id=1
 
   maka kita akan menambahkan variabel yg berisi enkripsi dari id yg kita modifikasi dengan string acak menjadi
     http://webkamu/berita.php?id=1&token=9b0443e36affedbafe882a4bbb90eaec
 
nah sekilas terlihat mirip sma url2 facebook.. wahh kereeen :)

ok, saya jelaskan maksud dari variabel token diatas, jadi ketika awal kita memberikan link untuk next berita or previous berita atau berita lainnya.. pokok nya yang menampilkan berita lain dah.. kita isi
$token = md5(md5($id_berita).md5('kata acak'));
jadi href nya menjadi : berita.php?id=$id_berita&token=$token
 
sekarang pada halaman tampil berita kita tambahkan pengecekan apakah id berita diganti/diinject manual oleh user dengan cara :
 
$id_berita=$_GET['id_berita'];
$token=$_GET['token'];
$cek=md5(md5($id_berita).md5('kata acak'));
if($token==$cek){
   //syntak menampilkan berita disini
}
else{
   echo "SQL Injection detected..!!!!";
}
 
nah slsai deh,, hehehe
bingung..??? semoga ngga deh yha.. klo bingung boleh dah rokoknya di isep dlu.. hehe (tpi jangan deket2 ma ane yha gan, ane ga ngerokok) pisssss..!!!
 
 
3. Khusus untuk form login, dengan melakukan enkripsi password atau merubah algoritma autentikasi login.
    biasanya kita melakukan pengecekan ketika user login yaitu dengan melakukan query kedatabase:
 
$input_username=$_POST[username];
$input_password=$_POST[password];
 
$q="SELECT * FROM tbl_user where username='$input_username' and password='$input_passsword'";
$r=mysql_query($q);
$jml_row=mysql_num_rows($r);
if($jml_row > 0){
     echo "login sukses";
}
else{
     echo "login gagal";
}
 
nah algoritma autentikasi login seperti diatas sangat rentan terhadap penetrasi SQL Injection..
solusi pertama dengan melakukan enkripsi pada password yaitu dengan mengganti
skrip berikut :
 
$input_password=$_POST[password]; menjadi:
$input_password=md5(md5($_POST[password]).md5('karakter acak'));
 
tentunya yang berakibat dengn mengenkripsi semua password di database sesuai enkripsi diatas.. :)
 
(semoga ga pada pusing yah :D)
 
solusi kedua yaitu dengan merubah algoritma menjadi
 
$d=mysql_fetch_array($r);
if($jml_row >0 && ($d[password]==$input_password))            << di tambah pengecekan inputan password thd password di dtabase
 
itulah trikx untuk menanggulangi hacking dengan SQL Injection......
 smoga bermanfaat :)

0 comments:

Post a Comment


Followers

visitor of state

like me on FaceBook