Sebelum Patch
$id=$_GET['id'];
setelah patch
$id=(int)$_GET['id'];
apakah dengan cara ini efesien. Untuk menghindari injec code dengan memberikan tanda kutip 1 (') tidak akan berfungsi lagi, karena nilai ID adalah INT tapi jika ada parameter minus (-) maka patch ini tidak berfungsi karena nilai INT juga terdapat nilai minus nya.
Jadi untuk itu kita musti melakukan filter data minus dan nilai selain variabel.
terdapat juga beberapa cara untuk itu, yaitu salah satunya adalah memberikan filtering seperti berikut ini :
error_reporting(0);
function filtering($id){
$idx = mysql_real_escape_string($id);
if (!ctype_digit($idx) || $idx < 0){
exit;
} else {
return $id;
}
}
Penjelasannya :
Memberikan perintah “error_reporting(0);” adalah untuk menghilangkan pesan error yang terjadi : “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''r00t'' ORDER BY date' at line 1” error ini akan hilang.
Dan untuk code :
adalah sebuah filter dengan idx adalah merupakan data dari mysql_real_escape_string dari ID.nanti akan di cek apakan parameter yang di masukan adalah karakter selain angka dan mempunyai nilai <0 . Ini adalah yang nantinya untuk melakukan filter nilai negative (-) jika parameter ID mengandung angka dan memiliki nilai negative (-) maka akan di tutup dan akan memanggil parameter ID.function filtering($id){
$idx = mysql_real_escape_string($id);
if (!ctype_digit($idx) || $idx < 0){
exit;
} else {
return $id;
}
}