*

  • bir sql sorgusuna (daha dogrusu $ablonuna) disaridan gelecek parametreleri en son bindirmeye deniyor. sql injection gibi naneleri engellemek icin birebir.

    mesela java'dayiz

    conn.preparestatement("select * from users where username = ? and password = ?", username, password);

    diyorsunuz, o guvenlice her seyi escape falan edip koyuyor oraya.
  • tek amacı güvenlik olmayan nane, tabloya milyon tane kayıt girilecekse hız kazanmak için de kullanılır. kabaca : sunucu ilk olarak sorguyu alır, ne yapacağını analiz eder, ardından siz parametreleri gönderirsiniz ve sunucu işlemi yapmaya başlar. girilen her kayıtda ilgili sqli alıp içine parametreleri escape ederek sorguyu yeniden çalıştırmaz yani.
  • (bkz: parameterized query)
    (bkz: preparedstatement)

    implementasyonu aşağıdakine benzer bir şekilde yapıldıysa hiçbir işe yaramaz:

    string query = "select * from user_hede where user_id = ? or (name = ? and surname = ?)";
    string[] parameters = new string[]{"123", "murtaza","lastname or 1=1"};

    for(int i=0;i<parameters.length;i++)
    {
    int index = query.indexof("?");
    if(index>-1)
    query = query.substring(0, index)+parameters[i]+query.substring(index + 1);
    else
    throw new runtimeexception("fazla parametre var burda aloooo");
    }

    output:
    select * from user_hede where user_id = 123 or (name = murtaza and surname = lastname or 1=1)

    (bkz: sql injection)
    (bkz: escape character)
    (bkz: magic quotes)
hesabın var mı? giriş yap