![]()
From: Burak DAYIOGLU (burak.dayioglu@pro-g.com.tr)
Date: Sun 22 Jun 2003 - 18:45:45 EEST
On Sun, 2003-06-22 at 15:25, Sancar Saran wrote:
> Kurdugum yapi onermis oldugunuz yolu kullanicak sekilde tasarlanmadi.
> Sanirim bir sekilde preg_replace ve veya en kotusu eregi yaptirmam
> gerekecek.
Sancar Hocam,
Trafigin basini kacirdim, yanlis anlamis isem bana ozel mesajla sorunuzu
tekrar gonderir misiniz?
> Aradaigim yaklasik olarak
>
> $sqlRequest = "SELECT * from table
> WHERE a = '{array[a]}'
> AND b = '{array[b]}'";
>
> $status = safe_sql($sqlRequest);
> if($status === safe)
> {
> do_sql($sqlRequest);
> }
> Bu yonde herhangibir oneriniz varmi ?
Anladigim kadari ile SQL enjeksiyonu saldirilari verileri alma ve
denetleme islemlerini tamamladiktan sonra akliniza geldi; eger boyle ise
kotu...
Yukarida onerdiginiz gibi bir denetleme isleminin safe_SQL() ile
orneklediginiz bicimde yapilmasi pek de uygun degil. Boyle bir
fonksiyonu atlatmanin birden fazla farkli yontemi var. SQL'in aslinda
nasil olmasinin uygun olmadigini bilmedigi surece safe_SQL()
fonksiyonuna gecerli sql'ler verdiginiz surece kabul edecektir.
Dusundugunuz gibi sizin beklentinizi anlayacak ve farkli ise SQL gecerli
olsa bile calistirmayacak bir mekanizma ne yazik ki yok, olmasi da bu
gunlerde yalnizca akademik arastirma konusu (ilgilenenler ile bu konuda
elimdeki guncel makaleleri paylasabilirim).
Bence yazilimi bastan elden gecirerek kullanicidan veri aldiginiz her
noktada denetim yapar hale getirmelisiniz. Denetim yaparken iki konuya
dikkat etmek lazim:
a. Verileri (i) buyuklukleri, (ii) turleri, (iii) icerikleri ve (iv)
mantiksal uygunluklari acisindan denetlemelisiniz. Her dort bicim
icin de farkli saldirilar mumkun.
b. Ozellikle icerik denetimi yaparken ve bilhassa mantiksal denetimin
yapilmasinin mumkun olmadigi free-form alanlarda, uygunsuz sembolleri
bulup ayiklamak yoluyla degil, "yalnizca bu semboller uygundur"
biciminde tanim yapmak yoluyla ayiklamalisiniz. Bugun uygunsuz
oldugunu dusunmediginiz bir sembol yarin basinizi cok agritabilir.
Pro-G olarak bu konuda duzenledigimiz bir kursumuz var; "Web Uygulama
Guvenligi - PGE-411". Tum orneklerin PHP ile verildigi, ancak salt
PHP'ye ozel olmayan, bir guvenli web uygulamalari gelistirme kursudur.
Detayli bilgilerine http://www.pro-g.com.tr/egitim/pge411.php adresinden
ulasabilirsiniz.
selamlar, iyi calismalar.
-- Burak DAYIOGLU Danisman, Pro-G Bilisim Guvenligi ve Arastirma Ltd. Phone: +90 312 2101494 Fax: +90 312 2101493 http://www.pro-g.com.tr ICQ UIN: 72276975
![]()