vezir adlı üyeden alıntı: mesajı görüntüle
CmDWeB
index.php?sql=union+all+select+users,pass+from+use rs+where+id=1 çalıştırsalar yersin derken sql diye php dosyamda tanım olması lazım değilmi? + yukarıdaki önlemleri kullanınca da mı engel olamayız yada ne yapmak lazım.
kısaca o satırın beni aştı
yani şöyle bir cümlen var

select * from x where id='".$_GET['id']."' get ile gelen veride union+all+select+users,pass+from+use rs+where+id=1 böyle olursa
(+ lar boşluk olarak kabul edilir) sorgun direk

select * from x where id='union all select users,pass from users where id=1'

oluyor burdada adam istedigi komutu çalıştırabiliyor yani
addslahes htmlspecialchars strip tag yada digerleri hiç biri etkinlik gösteremedi sonuç olarak sql injectiona uğradın önceki mesajımda dedigim gibi kendini geliştirdikçe bazı şeyleri göreceksin özellikle ilk başladıgın sıralar benim gibi bir aptallık yapıp hack e bulaşmışsan ileride çok faydası oluyor neyse fazla konuştum işin özü mesela sef linkler mi yapıyorsun şöyle yap id ile çek
id de de şöyle bir kontrol yap

if(!is_numeric($_GET['id'])) exit('sie');

yada id siz sef link mi yapıyorsun şöyle yap
$sef = urlencode($_GET['sef']);
%20%56%44 tarzı karakterlere çeviriyor veritabanından eklerkende urlencode olarak eklersin eşleşir ve çalışır yani yöntem çok fakat belli başlı bir yöntem yok


sql adlı üyeden alıntı: mesajı görüntüle
yalnız addslashes ya da mysql_escape_string php, mysql sürümüne göre farklı çalışır. php4 ve 5 için uygulamalarda ufak farklılıklar oluyor. bunun üzerine hazır classlar var. php versionunu kontrol edip ona göre uygun fonksiyonu seçiyor. eğer uygun sürümü kullanmaz db'ye de \' şeklinde işliyor ( \ ile birlikte ). bu nedenle biraz araştırmak lazım

bu konuda çok önemli bir konu eğer php sürümünüzü güncel tutarsanız bu tür ufak şeylerdende korunmuş olursunuz sanırsam php 6 özelliklerinden biride buydu bu tür hataları kaldırıyorlar.