[linux-programlama] Re: PHP SQL Injection Kontrol

---------

From: Enver ALTIN (enver.altin@frontsite.com.tr)
Date: Mon 23 Jun 2003 - 14:41:46 EEST

  • Next message: Burak DAYIOGLU: "[linux-programlama] Re: PHP SQL Injection Kontrol"

    On Mon, 2003-06-23 at 17:09, Burak DAYIOGLU wrote:
    > On Mon, 2003-06-23 at 11:21, Enver ALTIN wrote:
    > > require_once("DB.php");
    > > $db=DB::connect("mysql://user:pass@host+unix/dbname");
    > > $sql=$db->query("select * from table where field1=?,field2=?", array($avalue, $asecondvalue));
    >
    > Merhaba,

    Merhaba,

    > $avalue ve $asecondvalue'nun benim onerdigim gibi denetimden
    > gecirildigini varsayiyorsunuz oyle degil mi? Aksi kabul edilebilir
    > degil... Emin olmak icin soruyorum...

    Hayir, bahsettiginiz gibi bir denetim gerekmiyor.

    PEAR kutuphanesi yada diger araclarin yaptigi is (saniyorum tahmininiz
    bu) "?" ile verilen parametreleri sirasiyla replace etmek degil. SQL
    sunucunun client kutuphanesi SQL sorgusunu ve parametreleri birbirinden
    ayri olarak tasiyor ve tum SQL sunucular, bu paremetreleri asil SQL
    sorgusunun icerigine bulastirmaksizin ayri bellek bolgelerinde sadece
    kiyaslama islemlerinde kullaniyorlar.

    Parametrik sorgu kullanmak akilli RDBMS sunucusunda performans artisi
    saglar (PostgreSQL, Oracle, InterBase/Firebird, Sybase, Informix, MS-SQL
    bunlardan birkaci ancak MySQL bu kategoride degil). Parametrik SQL
    sorgular ilk calistirildiklarinda bunlar icin (aslinda tum sorgular
    icin) bir optimization plan hazirlanir. Ayni sorgu ikinci kez
    calistirildiginda bu islemler daha once yapildigindan ikinci kez
    optimization uygulanmaz, daha hizli index/search yapilir ve sorgu
    calistirma suresi onemli olcude kisalir.

    PS: PHP'deki tum veritabani sunuculari icin *_query() fonksiyonlari ile
    parametrik query kullanabilirsiniz.

    PS2: Bircok SQL sunucusu ard arda bircok kez calistiracaginiz sorgular
    icin prepare(), execute() destekler.

    Saygilar

    -- 
    --------------------------------------------------------------------
    Enver ALTIN (a.k.a. skyblue) -		enver.altin@frontsite.com.tr
    Software developer, IT consultant
    frontsite Bilgi Teknolojisi A.S.	tel:  +90 212 356 16 35 (pbx)
    					fax:  +90 212 356 16 36
    --------------------------------------------------------------------
    



  • Next message: Burak DAYIOGLU: "[linux-programlama] Re: PHP SQL Injection Kontrol"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.