SQL İnjection Açıgı Kapatma

Yazının yazıldığı tarih Tarih: 5 Mayıs 2014  Yazının ait olduğu kategori Bölüm: Güvenlik  Yazının okunma sayısı Okunma: 3.736 views  Yazıya yapılan toplam yorum 2 yorum

database-guvenligi

Bir çok yazılımcı arkadaşın gözünden kaçtıgı veya fark etmediği yerlerde kodlama yaparken sql açıgı bırakılar, bu sql açığı ile veritabanına injection yaparak zararlı kodlar ile veritabanınızı ele geçirirler. Sql açığı ne olduğu yönünde bilgi vermek gerekirse sql injection sayesinde ilgili db üzerinden tüm verilere (admin bilgileri, admin şifeleri, üye bilgileri gibi) ulaşıp elegeçirirler.

Bu tür açıklar genelde id’li url lerde verilir mesela ” www.harunbudun.com/makaleyorum?id=5 ” ( öylebir link yok 😀 ) bu id üzerinden sql açığı olup olmadığını sonuna ‘ koyarak anlayabiliriz, buna önlem olarak ise aşşağıdaki gibi bir işlem yapabiliriz.

Açık olan kodlama;

  • <?

$id= $_GET[‘id’]; //Önceki sayfadan gelen id değeri

$kayit= mysql_query(“SELECT * FROM makale WHERE id=$id”);

?>

Yukarıdaki kodlamada olan sql açığını nasıl kapatırız?

  • <?

$id= mysql_real_escape_string($id);

?>

 

Gelen id leri rakamsal olarak ifade edelim;

  • <?

$id= $_GET[‘id’]; //Önceki sayfadan gelen id değeri

$id= mysql_real_escape_string($id);

$kayit= mysql_query(“SELECT * FROM makale WHERE id=$id”);

?>

 

Açığın kapatılmış son hali üsttedir. Eğer bu şekilde yaparsanız açığı kapatmış olur ve sisteminizin güvenliğini biraz daha arttırmış olursunuz..

Unutmayın hiçbir sitem %100 güvenli değildir 😉

 

 

 
Facebook'ta paylaş   Twitter'da paylaş   Besleme | RSS

Yorumlar

  1. 11 Şubat 2017 - 22:22

    Userinput reaches sensitive sink. For more information, press the help icon on the left side. (Blind exploitation)
    27: odbc_execute odbc_execute($stmt, $args))
    26: $args = $username // array()
    6: $username = trim($_POST[‘username’]) : ”;
    requires:
    13: if(isset($_POST) && !empty($_POST))
    21: if(ctype_alnum($username) === false) else

    sql İnjection açığı alıyorum yardımcı olabilirmisiniz.