• 16-06-2008, 19:54:50
    #1
    Üyeliği durduruldu
    Şimdiye kadar bir çok yazı okudum, herkes kafasına göre bir çok fonksiyon yazmış. Benim istediğim kullanıcıdan form ile aldığım veriyi mysql'a göndermeden önce filtrelemek. Bunun için mysql_real_escape_string() yeterli olduğunu yazmış bir çok kişi. Eğer yeterli ise abudik kubidik fonksiyonları kullanmama gerek var mı?

    Xss açığı oluşmaması için neler yapabilirim?

    Sistemde bazı yerlerde SESSION ve COOKIE kullanıyorum. Bazı yerlerde sayfa.php?veri=ornek şeklinde kullanımlarım var. Bunları htmlentities($_GET['veri']) şeklinde filtreliyorum. <script>..</script> etiketlerini pasifleştiriyor bu ne kadar güvenilir?

    Lütfen emin olmadığınız bilgi vermeyin, kafam yeterince karışık
  • 16-06-2008, 20:10:54
    #2
    Eposta Aktivasyonu Gerekmekte
    Sık kullandığım temizleme fonksiyonu, özeelikle ziyaretçiden gelen her türlü form bilgisi ve çerez/oturum bilgileri için kullanabilirsin.
    function ttt_injection($str = NULL) {
    	 $rplce = array(">", "<", "#", "$", "%", "^", "&", "*", "(", ")", "~", "`", "=", "+", "\\", "'", "\"", "|", ";", "?", "!", "[", "{", "]", "}", "CREATE", "INSERT", "DROP", "drop", "DROp", "DRoP", "DrOP", "dROP", "DRop", "Drop", "drOP", "dROp", "DrOp", "dRoP", "UPDATE", "SELECT", "NULL", "FROM", "", "%20", "%3C", "%3E", "%23", "%25", "%7B", "%7D", "%7C", "%5C", "%5E", "%7E", "%5B", "%5D", "%60", "%3B", "%2F", "%3F", "%3A", "%40", "%3D", "%26", "%24");
    	 $protected = htmlspecialchars($str);
        if (get_magic_quotes_gpc()) {
          $protected = stripslashes($str);
        }
        if (function_exists("mysql_real_escape_string")) {
          $protected = mysql_real_escape_string($str);
        } else {
        $protected = addslashes($str);
        }
       $protected = strip_tags(trim(str_replace($rplce, "", $str))) ;
       return $protected;
      }
    kullanımı: ttt_injection($str);

    Dosya yükleme (Upload) işlemleri ve text editörü kullanılan formların içinde;
    strip_tags(addslashes($str))
    yeterli olacaktır.
  • 16-06-2008, 20:47:26
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    htmlspecialchars() da html etiketlerini tamamen temizler.
  • 16-06-2008, 22:32:21
    #4
    Üyeliği durduruldu
    Ziyaretçiden aldığım ve mysql'a işlemediğim verileri (formdan gelenler, session ve cookie) htmlentities($_GET['veri']) ile filtrelemem bir açık oluşturur mu?

    Bir de Mysql ile ilgilisi olmayan verileri mysql_real_escape_string() ile filtrelemem mantıklı mı?

    En sade şekilde filtrelemek istiyorum, anlamadığım karışık fonksiyonları kullanmak istemiyorum
  • 16-06-2008, 23:50:04
    #5
    Eposta Aktivasyonu Gerekmekte
    Alonso adlı üyeden alıntı: mesajı görüntüle
    Ziyaretçiden aldığım ve mysql'a işlemediğim verileri (formdan gelenler, session ve cookie) htmlentities($_GET['veri']) ile filtrelemem bir açık oluşturur mu?
    Bir de Mysql ile ilgilisi olmayan verileri mysql_real_escape_string() ile filtrelemem mantıklı mı?
    En sade şekilde filtrelemek istiyorum, anlamadığım karışık fonksiyonları kullanmak istemiyorum
    verdiğim fonksiyon hepsini içerir. Anlamadığın fonksiyonlar için php.net e bakabilirsin.
    mysql_real_escape_string()
    htmlentities()
    stripslashes()
    htmlspecialchars()
    get_magic_quotes_gpc()
    strip_tags()
    str_replace()