THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

Mysql injection'dan korunma

Black-Box - ait Kullanıcı Resmi (Avatar)
Emektar
Üyelik tarihi:
07/2008
Nereden:
İstanbul.
Mesajlar:
5.237
Konular:
2649
Teşekkür (Etti):
254
Teşekkür (Aldı):
1983
Ticaret:
(0) %
03-12-2010 00:57
#1
Mysql injection'dan korunma
Mysql Nedir ?

Mysql tüm verileri tek bir yere yığmak yerine farklı tablolara farklı kolonlara düzenli bir şekilde saklamaya yaran bir depolama alanıdır.Sql injection asla bitmeyen açıklardan biridir.Admin bilgisizliğinden kaynaklanır.Açıklarını kontrol etmemesinden ve bulduğu açıkları kapatamamasından, biz bugün bu açıkları kapatmayı öğrenicez.

Mysql? Açık? Kapatmak?


Mysql açığını bulmak için belirli dorklar scannerlar kullanılır.Google gibi sitelere index.php?id= gibi dorklar arattırılarak sql açıklı siteler bulunabilirnir.Biz bu bulunnan siteler arasında nasıl sağlam olucaz onu öğrenicez.

Örnek olarak www.cho.com/news.php?id=1
Bu gibi ıd değeri olan sitelerde açık olup olmadığı anlaşılması için;
'
"
'a
gibi hassas komutlar koyulur.
Örnek olarak : www.cho.com/news.php?id=1'a
Eğer bunu yaptığımızda karşımıza bu gibi bir hata çıkıyorsa sitede mysql injection mevcuttur.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in....
Zaten mysql için programlar bile mevcuttur.(örnek : havij,m4x)Yani hata çıktığı anda kendimizi bir nevi hacklenmiş sayabiliriz.

Engellemek?


Bu açığı kapatmamız için aşağıdakileri uygulamalıyız.

Kodlamanızı yaparken mysql_query() ile kullanıdığınız sorgularda get,port ile çekilen verileri 'a komutları ile kontrol edin ve çıkan sorguya bakın.
select * from haber where id = $_GET[’id’];
Bu gibi bir sorgu çıkmışsa sitenizde çok rahat bir şekilde mysql injection yapılabilinir.Yani sitenizin şifrelerine erişebilinir.
Kullanıcıdan gelen verileri '(tırnek işareti) içerisine yazarsanız injection olmaz.

select * from haber where id = ’$_GET[id]’;


news.php?id=1 union select bu komut sitenizde işlemez.

Yada aşağıdaki komutu id değişkenini interger olarak tanımlarsanızda mysql injection olmaz.

$id=(int)$_GET[’id’];

select * from haber where id = ’$id’;

Evet arkadaşlar bunları yaptığınızda mysql injection ortadan kalkmış oluyor.
Konu TRNooNTR tarafından (03-12-2010 01:47 Saat 01:47 ) değiştirilmiştir.
Kût'ül-Amâre Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler