Jadi kalian ketahui bahwa SQL Injection terjadi karena tidak adanya penanganan terhadap karakter-karakter tanda petik tunggal (‘) dan juga karakter double minus (–). Sehingga seorang attacker dengan mudahnya bisa menyisipkan perintah SQL kedalam suatu parameter maupun suatu Form. Karena sesungguhnya para attacker hanya bermodalkan algoritma yang matang yang nantinya akan menjadi kode berbahaya bagi situs yang menjadi sasaran.
How to fix it?
Disini saya mempunyai sebuah contoh script yang belum di filter atau masih vuln SQLi:
<?php
require_once("koneksi.php");
if(isset($_GET['id'])){
$id = $_GET['id'];
$query = mysql_query("select * from petugas where id='$id'");
while($data = mysql_fetch_assoc($query)){
$id = $data['id'];
$nama_depan = $data['nama_depan'];
$nama_belakang = $data['nama_belakang'];
$password = $data['password'];
$hak = $data['hak'];
echo "
<tr>
<td>$id</td>
<td>$nama_depan</td>
<td>$nama_belakang</td>
<td>$password</td>
<td>$hak</td>
</tr>
";
}
}
?>
Bagaimana cara mengatasinya? Kalian cukup menuliskan script tambahan dibawah ini:
if(preg_match("/'|onion|%27/",$id)){
echo "NO SQL Injection Please - Patch By Pixel-Code";
exit();
}
Tampilan contoh script jika sudah di tambahkan (Disini saya cuman menggunakan sepotong scriptnya saja):
<?php
require_once("koneksi.php");
if(isset($_GET['id'])){
$id = $_GET['id'];
if(preg_match("/'|onion|%27/",$id)){
echo "NO SQL Injection Please - Patch By Pixel-Code";
exit();
}
$query = mysql_query("select * from petugas where id='$id'");
while($data = mysql_fetch_assoc($query)){
$id = $data['id'];
$nama_depan = $data['nama_depan'];
$nama_belakang = $data['nama_belakang'];
$password = $data['password'];
$hak = $data['hak'];
Bagaimana cukup mudah bukan? Jangan hanya bisa injectnya saja bisa patchnya nda bisa hehe, Oke mungkin cukup sekian dari saya semoga bermanfaat see you next time byee~
Itu di login.php nya mas ? Atau dimana ? Saya maaih bingung dimna naruh script pathnya
ReplyDeleteTergantung dia vulnerablenya di parameter mana
ReplyDelete