• 31-07-2007, 16:52:39
    #10
    Üyeliği durduruldu
    define ( PASSWORD, "şifre" );
    define ( PASSLEN, 16 );
    
    function get_rnd_iv ( $iv_len ) {
        $iv = '';
        while ( $iv_len-- > 0 ) {
            $iv .= chr ( mt_rand ( ) & 0xFF );
        }
        return $iv;
    }
    
    /*
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    ::
    ::    md5_encrypt...Rastgele 44 bit şifreleme yapar..
    ::
    */
    function md5_encrypt ( $plain_text, $password = PASSWORD, $iv_len = PASSLEN ) {
        $plain_text .= "\x13";
        $n = strlen ( $plain_text );
        if ( $n % 16 ) $plain_text .= str_repeat ( "\0", 16 - ( $n % 16 ) );
        $i = 0;
        $enc_text = get_rnd_iv ( $iv_len );
        $iv = substr ( $password ^ $enc_text, 0, 512 );
        while ( $i < $n ) {
            $block = substr ( $plain_text, $i, 16 ) ^ pack ( 'H*', md5 ( $iv ) );
            $enc_text .= $block;
            $iv = substr ( $block . $iv, 0, 512 ) ^ $password;
            $i += 16;
        }
        return base64_encode ( $enc_text );
    }
    
    /*
    :::::::::::::::::::::::::::::::::::::::::::::::::::
    ::
    ::    md5_decrypt...44 bitlik şifreyi çözer..
    ::
    */
    function md5_decrypt ( $enc_text, $password = PASSWORD, $iv_len = PASSLEN ) {
        $enc_text = base64_decode ( $enc_text );
        $n = strlen ( $enc_text );
        $i = $iv_len;
        $plain_text = '';
        $iv = substr ( $password ^ substr ( $enc_text, 0, $iv_len ), 0, 512 );
        while ( $i < $n ) {
            $block = substr ( $enc_text, $i, 16 );
            $plain_text .= $block ^ pack ( 'H*', md5 ( $iv ) );
            $iv = substr ( $block . $iv, 0, 512 ) ^ $password;
            $i += 16;
        }
        return preg_replace ( '/\\x13\\x00*$/', '', $plain_text );
    }
    Bu önemli bir fonksiyon'dur. Define ile belirlediğiniz password ve passlen'e göre şifreleme yapar.Bir kelime için her seferinde farklı hash'lar çıkartabilir.Bunu Güvenli cookie'de, Kullanıcı şifresini hash'lamada vs. kullanabilirsiniz.Sizin belirlediğiniz password ve passlen bilinmedikten sonra kırılması imkansızdır.
    Kullanımı:
    $sifreli = md5_encrypt("Lisans");
    echo $sifreli."<br />";
    $sifresiz = md5_decrypt($sifreli);
    echo $sifresiz;
  • 31-07-2007, 22:49:29
    #11
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bende Paylaşayım Bari

    xss ve sql den Korunmak İçin Aşağıdaki Fonksiyonu Kullanıyorum Çok basit Bi fonksiyon

     
    function temizle($veri) {
    return mysql_real_escape_string(trim(htmlspecialchars($veri))); 
    }
    Kullanımı temizle($gelenveri); Şeklinde

    Get İle Verileri alırkende Misal intval Olup Olmadıgını Kontrol ediyorum Genelde
    haber.php?no=1 gibi Düşünecek Olursak haber.php dosyasının en üstüne

     
    <?
    if(!intval($_GET[no]))
    {
    echo 'işlem Hatası Oldu Sen Bir Hackermisin ?';
    exit(); // Buradaki Exit Önemli exit Kullanmayasaydık Kodların İşleyişi Devam ederdi 
    }
    ?>
  • 03-08-2007, 18:21:37
    #12
    Üyeliği durduruldu
    Arama kısımlarında bu kodlar pek bir işe yaramaz ne gibi derseniz özellikle LIKE komutu kullanırken ^ % vs. gibi illegal karakterler'in filtrelenmesi gerekir yoksa istenmeyen bug'lara sebebiyet verebilir. Bunun için şu fonksiyon kullanılabilir.

    <?php
    # Lisans
    function Arama_Filtrele($kelime){
    $kelime = htmlspecialchars(mysql_real_escape(stripslashes($kelime)));
    $kelime = str_replace('^','\^',$kelime);
    $kelime = str_replace('%','\%',$kelime);
    $kelime = str_replace('_','\_',$kelime);
    $kelime = str_replace('[','\[',$kelime);
    $kelime = str_replace(']','\]',$kelime);
    $kelime = str_replace('-','\-',$kelime);
    return $kelime;
    }
    ?>
  • 04-08-2007, 16:13:05
    #13
    Üyeliği durduruldu
    Bir diğer bug'sa isset fonksiyonudur. Bu fonksiyon ile bir değişken'e verinin set edilip edilmediğini kontrol ederiz. Ancak değişken boş bile olsa NULL değer bile set edildiği an şart'ı sağlamış kabul eder.Buda istenmeyen açıklara ve bug'lara sebebiyet verebilir.Daha önce çok başıma geldi session'a değer atamamasına rağmen NULL değer set edildiği için şarta girmesi olayı. Ben şahsen bunun için empty fonksiyonunu kullanıyorum empty değişkenin boş olup olmadığına bakar ve değişkene NULL değer bile set edilse şart'a girmez buda istenmeyen bug'lara ve açıkları engellemiş olur.
    Bir değişkenin boş olduğunu
     if(empty($degisken)){  }
    dolu olduğunu ise
     if(!empty($degisken)){  }
    ile kontrol edebiliriz.Böylece değişkene NULL değer bile set edilse şart'a girmemesini sağlarız.
  • 04-08-2007, 17:37:44
    #14
    Lisans adlı üyeden alıntı: mesajı görüntüle
    Bir diğer bug'sa isset fonksiyonudur. Bu fonksiyon ile bir değişken'e verinin set edilip edilmediğini kontrol ederiz. Ancak değişken boş bile olsa NULL değer bile set edildiği an şart'ı sağlamış kabul eder.Buda istenmeyen açıklara ve bug'lara sebebiyet verebilir.Daha önce çok başıma geldi session'a değer atamamasına rağmen NULL değer set edildiği için şarta girmesi olayı. Ben şahsen bunun için empty fonksiyonunu kullanıyorum empty değişkenin boş olup olmadığına bakar ve değişkene NULL değer bile set edilse şart'a girmez buda istenmeyen bug'lara ve açıkları engellemiş olur.
    Bir değişkenin boş olduğunu
     if(empty($degisken)){  }
    dolu olduğunu ise
     if(!empty($degisken)){  }
    ile kontrol edebiliriz.Böylece değişkene NULL değer bile set edilse şart'a girmemesini sağlarız.
    Katılıyorum isseti heryerde kullanmamak lazım, ben genelde;
    if ( $degisken == "" )
    if ( $degisken != "" )
    kullanıyorum. Bu da $degisken in boş olup olmadığına bakıyor.
  • 04-08-2007, 17:42:18
    #15
    Üyeliği durduruldu
    Fakat değişkene NULL atanırsa o şartlarada girebilir.Çünkü NULL boş'tan farklı bir kavramdır
  • 04-08-2007, 20:27:51
    #16
    Üyeliği durduruldu
    null 0 boş hepsi aynı if ile dene istersen lisans
  • 04-08-2007, 20:47:24
    #17
    Üyeliği durduruldu
    evet öyleymiş o zaman benim dediğim T-sql için geçerli hocamız söylemişti zamanında ordan kaldı aklımda :~)
  • 04-08-2007, 22:00:00
    #18
    bende bi ara büyük bi döküman yazmayı düşünmüştüm php için sql html csrf injection ,xss , client-ip,ref,user-agent injection,http splitting,remote/local bof lar,undefined variable lar,register globals,remote/local cmd exec,file upload,null byte lar, vs. aklıma gelmeyen tonla şey
    unutmayınki php deki default funcların en az %40 ı kötüye kullanılabilir size önerim herşey get ten ibaret deildir kullanıcıdan alacağınız verileri işlerken sıkı filtrelemelerden geçirin sık sık test edin