Selasa, 29 Desember 2009

Beberapa langkah untuk menghindari PHP Injeksi

Mungkin sudah banyak sekali artikel-artikel yang membahas tentang cara menghindari PHP Injeksi, namun disini saya akan menjelaskan lebih detail lagi caranya beserta source code nya sehingga pembaca lebih mudah untuk mengimplementasikannya.
Tentu anda sudah tidak asing lagi mendengar kata PHP Injeksi, tapi mungkin ada beberapa orang yang belum mengerti apa itu PHP Injeksi.
PHP Injeksi adalah sebuah istilah dimana seorang penyusup membongkar security web dengan cara memasukan skrip-skrip PHP maupun JavaScript kedalam sistem web melalui media inputan seperti News, ShutBox ataupun lewat URL.
Untuk menghindari hal-hal tersebut ada beberapa langkah yang dapat kita lakukan, yaitu:



1.    Anda dapat sedikit merubah teknik kode saat mengeksekusi isi berita(News). Berikut adalah contoh kodenya:
$dbh = mysql_connect(‘localhost’, ‘username’, ‘password’);
mysql_select_db (‘cmsdb’, $dbh);
$id = mysql_real_escape_string($_GET[‘id’]);< br />$SQL = “SELECT * FROM (nama_tabel) WHERE (id)= ‘”.$id.”’”;
$result = mysql_query($SQL, $dbh) OR die (mysql_error($dbh));
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
     $headline = stripslashes($row[‘headline’]);
     Echo “Headline” .$headline;
}
Mysql_free_result($result);
Mysql_close($dbh);
?>

2.    Anda dapat melakukan validasi data yang berasal dari URL. Contohnya:
$dbh = mysql_connect(‘localhost’, ‘username’, ‘password’);
mysql_select_db (‘cmsdb’, $dbh);
$id = $_GET[‘id’];
if (!is_numeric($id)){
die (“Jangan memodifikasi ID berita”);
}
$SQL = “SELECT * FROM (nama_table) WHERE (id) = ‘”.$id.”’”;
$result = mysql_query($SQL, $dbh) OR die (mysql_error($dbh));
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
     $headline = stripslashes($row[‘headline’]);
     Echo “Headline” .$headline;
}
Mysql_free_result($result);
Mysql_close($dbh);
?>

3.    Membatasi panjang digit user saat login. Contohnya:
$dbh = mysql_connect(‘localhost’, ‘username’, ‘password’);
mysql_select_db (‘cmsdb’, $dbh);
$username = $_POST[‘username’];
$password = $_POST[‘password’];
$length = strlen ($username);

// Apabila datanya terlalu panjang, maka pesan akan ditolak
If ($length < 5 || $length > 25) {
     die (‘Digit user anda berlebihan!!! Masukan hanya antara 5 sampai 25 digit saja’);
}

// Menjalankan query
$SQL = “SELECT * FROM users WHERE username = ‘”.$username.”’”;
$SQL  .= “AND password=PASSWORD (‘$password’) “;
$result = mysql_query ($SQL);
Mysql_close ($dbh);
?>


Tidak ada komentar:

Posting Komentar