• 08-06-2014, 22:45:05
    #1
    Merhaba arkadaşlar,

    Son zamanlarda epey sıkıntı çekmekteyim. Sizler bu durumdan nasıl korunuyorsunuz uyguladığınız yöntemler nedir yardımcı olursanız çok sevinirim.

    Ben 1. olarak mysql_real_escape_string()
    2. olarak addslashes();
    3. olarak
    function sql_injection($parametre){
            $girilen = array("*","/"," ","'","-","or","OR","`","and","<",">","refresh","location","\n");
            $dogrusu = array("","","","","","","","","","","","","","<br>");
    
            $dogrusuyla_degistir = str_replace($girilen,$dogrusu,$parametre);
            return $dogrusuyla_degistir;
        }
    fonksiyonum var fakat her seferinde yine giriyorlar db'ye yine giriyorlar.
  • 08-06-2014, 22:46:55
    #2
    Üyeliği durduruldu
    Justian0 adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar,

    Son zamanlarda epey sıkıntı çekmekteyim. Sizler bu durumdan nasıl korunuyorsunuz uyguladığınız yöntemler nedir yardımcı olursanız çok sevinirim.

    Ben 1. olarak mysql_real_escape_string()
    2. olarak addslashes();
    3. olarak
    function sql_injection($parametre){
            $girilen = array("*","/"," ","'","-","or","OR","`","and","<",">","refresh","location","\n");
            $dogrusu = array("","","","","","","","","","","","","","<br>");
    
            $dogrusuyla_degistir = str_replace($girilen,$dogrusu,$parametre);
            return $dogrusuyla_degistir;
        }
    fonksiyonum var fakat her seferinde yine giriyorlar db'ye yine giriyorlar.
    sql inj olduğuna emin misin ? veya he rşeyi süzdüğüne emin misin ? ve pdo neden kullanmıyorsun
  • 08-06-2014, 22:52:03
    #3
    mka688 adlı üyeden alıntı: mesajı görüntüle
    sql inj olduğuna emin misin ? veya he rşeyi süzdüğüne emin misin ? ve pdo neden kullanmıyorsun
    sql injection olduğuna eminim çünkü sadece db'ten veri update yaparak yönlendirme yapıyorlar başka bir sebebi olabilir mi? her şeyi süzdüğüme eminim ama yinede tekrar bakayım belki gözden kaçan bir şey vardır :/ pdo şimdi araştırıyorum bakayım teşekkürler
  • 08-06-2014, 23:12:23
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    htmlspecialchars($data, ENT_QUOTES, 'utf-8'); ve bunun üstüne mysql_real_escape_string kullanmanız durumu çözebilir. Bu durumda verileri tekrar okurken, htmlspecialchars_decode ile geri dönüşüm yapmanız gerekiyor. Tabi bu yöntemlerin tam olarak güvenir olduğu söylenemiyor ne yazık ki. PHP'nin de önerdiği üzere güvenli sorgu ve işlemler için PDO'ya yönelmenizde yarar var.
  • 08-06-2014, 23:20:08
    #5
    _BuKi_ adlı üyeden alıntı: mesajı görüntüle
    htmlspecialchars($data, ENT_QUOTES, 'utf-8'); ve bunun üstüne mysql_real_escape_string kullanmanız durumu çözebilir. Bu durumda verileri tekrar okurken, htmlspecialchars_decode ile geri dönüşüm yapmanız gerekiyor. Tabi bu yöntemlerin tam olarak güvenir olduğu söylenemiyor ne yazık ki. PHP'nin de önerdiği üzere güvenli sorgu ve işlemler için PDO'ya yönelmenizde yarar var.
    Anlıyorm şimdi pdo bakıyorum kullanımıda basit gözükmekte (henüz yazmadığım için sanırım ) kafama takılan bir şey var şimdi gelen kişi veriyi update etmekte yani
    <meta http-equiv="refresh" content="5;URL=http://www.siteadi.com">
    yönlendirme ekliyor yani demek istediğim şey veri eklemesini nasıl engellerim diyelim ki eklemesine izin veriyorum fakat bu tarz zararlı verileri eklemesine nasıl engellerim?
    Ben pdo araştırmaya devam edeyim en iyisi sanırım çözümü vardır mutlaka )

    Çok teşekkür ederim.
  • 08-06-2014, 23:35:41
    #6
    Replace işlemleri ile veriyi analiz edip, değiştirebilirsin ama bu kısmen olur. Çünkü kimin nasıl bir betik yazacağını bilemezsin. Tamamen önlem aldım diye düşünürken de, yanıldığın olabilir. html etiketlerden kurtulmak için, strip_tags kullanabilirsin. ID değerlerine göre işlem yapıyorsan mutlaka bu değeri intval() veya is_numeric gibi fonksiyonlardan geçirip numerik bir değer olup olmadığını kontrol edebilirsin. Yukarda fonksiyonlar ile de, biraz daha önlemini katlamış olursun.
  • 08-06-2014, 23:42:20
    #7
    Üyeliği durduruldu
    procedure ler işe yaramıyormu
  • 09-06-2014, 01:30:01
    #8
    PDO ya da Mysqli Kullanın artık bu tarz sorunlar kalmadı
  • 09-06-2014, 09:04:33
    #9
    _BuKi_ adlı üyeden alıntı: mesajı görüntüle
    Replace işlemleri ile veriyi analiz edip, değiştirebilirsin ama bu kısmen olur. Çünkü kimin nasıl bir betik yazacağını bilemezsin. Tamamen önlem aldım diye düşünürken de, yanıldığın olabilir. html etiketlerden kurtulmak için, strip_tags kullanabilirsin. ID değerlerine göre işlem yapıyorsan mutlaka bu değeri intval() veya is_numeric gibi fonksiyonlardan geçirip numerik bir değer olup olmadığını kontrol edebilirsin. Yukarda fonksiyonlar ile de, biraz daha önlemini katlamış olursun.
    intval() fonksiyonunu kullanmamıştım pdo ile bakayım nasıl kullanabilirim diye. strip_tags kısmen sorunumu çözmüş olacak kişi veritabana veri ekleyebildikçe sorun hep devam edecek yardım için teşekkürler

    Bay_Keskin adlı üyeden alıntı: mesajı görüntüle
    PDO ya da Mysqli Kullanın artık bu tarz sorunlar kalmadı
    bugün pdo geçiş yapıyorum inş. bende sorun yaşamam artık