SQL injection açığı

Virüs, trojan ve buna benzer konularda paylaşımların yapılabileceği forum.
Cevapla
Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 350
Kayıt: 16 Şub 2009, 01:16

SQL injection açığı

Mesaj gönderen Özgür » 06 Nis 2011, 16:16

SQL injection açığı konusunda yardımcı olabilir misiniz?

Kullanıcı avatarı
Gökhan
Deneyimli Üye
Deneyimli Üye
Mesajlar: 390
Kayıt: 11 Şub 2009, 22:57

Re: SQL injection açığı

Mesaj gönderen Gökhan » 06 Nis 2011, 18:32

Çok kabaca söylemek gerkirse , veritabanı ilişkisinde çalıştırılmak üzere hazırlanmış sql cümleciklerini, POST ve GET ile gönderilen bir takım sözcükler ile manipule etme işlemidir.

PHP için konuşacak olursak, php.ini içerisinde magic_quotes_gpc özelliğinin açık olmasını öneririm (fakat bu özelliğe güvenerek kod yazmanız tavsiye edilmiyor), ayrıca bunun açık olmama ihtimaline karşılık, GET ve POST ile alıp sql cümlenize eklediğiniz verileri (') tek tırnak gibi karakterlerden temizlemek de mantıklı bir korunma yolu olacaktır.

Örnek;

Bir login formundan $un ve $pwd kullanıcı tarafından girilip gönderildiğini düşünelim.

Şu şekilde alabiliriz.

Kod: Tümünü seç

if (!get_magic_quotes_gpc())
 { // magic_quotes kapalı ise
$un = strip_tags(addslashes($_POST["un"])); // eğer magic_quotes kapalı ise addslashes \' şeklinde tırnakları gizleyecektir.
$pwd = strip_tags(addslashes($_POST["pwd"]));
}
else
{
$un  = strip_tags($_POST["un"]);
$pwd = strip_tags($_POST["pwd"]);
}



Eğer yukarıdaki şekilde verileri alırken önlem almamış olsaydık;

şöyle bir sorgu geçirdiğimizi varsayalım

$sql = "select * from uyeler where un='".$un."' and pwd='".$pwd."'";

eğer birisi un ve pwd yi formdan şöyle girerse

un değişkenini temsil eden form alanına, ' or '1'='1
pwd değişkenini temsil eden form alanına, ' or '1'='1

bunları un ve pwd nin yerine koyalım

$sql = "select * from uyeler where un='' or '1'='1' and pwd='' or '1'='1'";

bu durumda sorgu her durumda başarılı olacaktır ve şifresiz login mümkün olacaktır, ayrıca büyük ihtimalle(önlem alınmamışsa)
kayıtlardaki ilk kullanıcı login olmuş olacak ve bu da muhtemelen kurucu olacaktır.

Cevapla

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir