dan diambil dari http://www.indonesianhacker.org/showthread.php?t=529 yang diposting oleh v4mp
Jangan cuma bisa attack. Tapi juga harus bisa defend.
Langsung aja..
Ini patch untuk mencegah serangan SQL Injection di halaman dinamis pada PHP + MySQL.
Biasanya halaman dinamis ini
bentuknya kayak gini http://uhui.com/vuln.php?id=[Input_Angka]
Bentuk umum kode di halaman dinamis php untuk membaca database melalui MySQL :
$id = htmlentities($_GET['id']);
$variabel = mysql_query("select *from tabeltarget where idtarget='$id'")
Injection Flaw terjadi karena inputnya gak kefilter dengan baik. Sehingga input ‘$id’ yang seharusnya diisi dengan (biasanya) angka bisa diisi dengan query SQL.. Yang mengakibatkan query SQL tersebut dieksekusi sehingga injector bisa melakukan berbagai hal misalnya membaca isi database, membaca suatu file di situs tersebut, dll.
Nah, untuk mencegah hal tersebut sebaiknya kita memfilter inputnya sebelum diproses dengan SQL.
Contoh kode filternya :
error_reporting(0);
class filter{
function filtering($id){
$idfilter = mysql_real_escape_string($id);
if (!ctype_digit($idfilter))
{
echo "Can't process your request, dude :P ";
exit;
}
else if ($idfilter <= 0)
{
echo "Can't process your request, dude :P ";
exit;
}
else
{
return $id;
}
}
}
$Filter2 = new filter();
$id = htmlentities($_GET['id']);
$secured = $Filter2->filtering($id);
$variabel = mysql_query("select *from tabeltarget where idtarget='$secured'")
Penjelasan :
Pertama-tama menggunakan error_reporting(0); . Kode tersebut digunakan untuk mendisable error reporting sehingga jika terjadi error tidak keluar pesan error.
Selanjutnya variabel $id disaring dulu menggunakan mysql_real_escape_string yang berfungsi untuk menambahkan slash (\) apabila ada tanda kutip pada input $id.
Setelah disaring dengan mysql_real_escape_string, disaring lagi dengan melakukan pengecekan apakah inputnya berupa angka atau bukan dengan menggunakan kode !ctype_digit . Jika ternyata bukan angka maka akan ditolak. Selain pengecekan input apakah angka atau bukan, dilakukan juga pengecekan apakah inputnya sama atau lebih kecil dari 0 (minus) jika iya maka akan ditolak.
Abis itu baru deh aplikasikan ke syntax SQL-nya.
Untuk lebih jelasnya silahkan baca ulang kode sebelum difilter dan setelah difilter berkali-kali sampai paham.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
..::james0baster::.. (15)
Berita dan Pengumuman (11)
Hacking (8)
Hacking (11)
ICT (4)
Internet (6)
Jaringan Komputer (7)
Java (1)
Keamanan (5)
Keamanan & Perbaikan WEB (9)
Komputer (8)
Local (3)
Pemerograman (8)
PHP (6)
Tips and Trick (6)
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
pertamax,,
nice inpoh gan,,
andaikan saya bisa membaca query Sql diatas seperti membaca C++
~_~
keep posting gan,,
nice web
scriptnya tu di pasang pd bagian mna gan? penjelasany?! thnx
di tempat yg memiliki vulnerability sql injection . nah di situkan di kasih script tentang query yg belom di filter. nah query ntuh di patch jadi ke filter