• 18-10-2009, 17:16:55
    #1
    Merhaba arkadaşlar. Aşağıda güvenlik koduna ek olarak flood koruması kodladım.

    Bakında biraz karışık gözükebilir. Burdaki amaç sürekli kullanılan bir sayfada botu engelleme. Özellikle post kasma gibi sürekli ard arda aynı sürelerdeki aralıklarda yapılan işlemler için.

    3 işlemin zamanını alıp 2. den 1i 3. dende 2yi çıkararak olarak aradaki saniye olarak zaman farklarını aldım. Bunlar eğer aynı ise yada aradaki saniye farkı 1 veya 2 saniye ise sessionu bitirip giriş sayfasına yönlendirdim. eğer böyle bir durum olmazsa başa dönmesi içinde sessionları boşalttımki sorun yoksa sürekli başa dönsün. Bu arada 1-2 saniye olayı bazen sayfa açılış hızında 1-2 saniye gecikme olarak bot işlem yaparsa diyerekten.

    tabi bunu daha geliştirip kendinize göre düzenleyebilirsiniz.

    Ben sizinde fikirlerinizi almak istiyorum. bu konuda. daha nasıl geliştirilebilir yada masumlarıda sıkıntıya sokarmı?

    if($_SESSION[k1] == ""){
    $_SESSION[k1]=time();
    }else{
    
    if($_SESSION[k2] == ""){
    $_SESSION[k2]=time();
    }else{
    
    if($_SESSION[k3] == ""){
    $_SESSION[k3]=time();
    }else{
    
    
    
    $arb=$_SESSION[k2]-$_SESSION[k1];
    $ara=$_SESSION[k3]-$_SESSION[k2];
    
    if($arb == $ara){
    session_destroy();
    echo "<meta http-equiv=Refresh content=0;url=index.php>";
    exit();
    }else{
    
    $f1 = $arb - $ara;
    $f2 = $ara - $arb;
    
    if($f1 > $f2){
    $son= $f1 - $f2;
    
    if($son < "3"){
    session_destroy();
    echo "<meta http-equiv=Refresh content=0;url=index.php>";
    exit();
    }else{
    $_SESSION[k1]="";
    $_SESSION[k2]="";
    $_SESSION[k3]="";
    }
    
    }else{
    
    $son= $f2 - $f1;
    
    if($son < "3"){
    session_destroy();
    echo "<meta http-equiv=Refresh content=0;url=index.php>";
    exit();
    }else{
    $_SESSION[k1]="";
    $_SESSION[k2]="";
    $_SESSION[k3]="";
    }
    }
    }
    }
    }
    }
  • 18-10-2009, 20:09:13
    #2
    Üyeliği durduruldu
    curl ile o floodu aşarım şahsen, session yerine txtye veya veritabanına yazdırıp kontrol ettirmeyi deneyin.
  • 18-10-2009, 23:37:07
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @devturkeli
    curl ile ancak random proxy ile aşarsın onun dışında birşey yapamazsın.
  • 19-10-2009, 00:05:50
    #4
    Üyeliği durduruldu
    dnmtnk adlı üyeden alıntı: mesajı görüntüle
    @devturkeli
    curl ile ancak random proxy ile aşarsın onun dışında birşey yapamazsın.
    @dnmtnk php bilgine bişey demeyeceğim fakat curl bilginin zayıf olduğu kanaatindeyim. Ben 7 yıldır kurumsal çalıştım, değil curl, sitedeki hemen hemen tüm sorunlarla zamanında haşır neşir olmuş bir insanım, kesin konuşmayalım bu şekilde, güldüm sadece dediğine.
    Her sayfa yenilemede rastgele veri yollanırsa aşağıdaki örnek hiç birşeye yaramaz.

    ayrıca şurayada bir göz at;
    http://zone.org/php/994-flood-icin-koruma.html
  • 19-10-2009, 00:17:09
    #5
    hım evet bizim yunus emre 'nin yıllar önce yazdığı yoldan yola çıkarak bunları demişsin.

    evet bu üsttekini geçersin ama flood da session_id kontrolü olursa ne yapcaksın peki ?
  • 19-10-2009, 00:20:07
    #6
    Üyeliği durduruldu
    dnmtnk adlı üyeden alıntı: mesajı görüntüle
    hım evet bizim yunus emre 'nin yıllar önce yazdığı yoldan yola çıkarak bunları demişsin.

    evet bu üsttekini geçersin ama flood da session_id kontrolü olursa ne yapcaksın peki ?
    yoksa ne olacak hala bişeyleri isbat etmeye çalışıyorsun, benim amacın sana birşeyi kanıtlamak değil, bu sistemin güvenli olmadıgı...
  • 19-10-2009, 00:21:21
    #7
    peki
  • 19-10-2009, 00:36:33
    #8
    Üyeliği durduruldu
    PEAR ın floodControl güvenlik sistemi. txt bazlı . Kullanımını anlattım;

    <?php
    require_once 'HTTP/FloodControl.php';
    try 
    {
        $ip = HTTP_FloodControl::getUserIP();
    } 
    catch (HTTP_FloodControl_Exception $e) 
    {
        die($e);
    }
    try 
    {
        $fc =& new HTTP_FloodControl();
        $fc->setContainer('File', 'C:\\xampp\\htdocs\\flood\\');
        $limitler = array (
            10   => 10,  // 10 saniyede maks 10 istek
            60   => 30,  // 60 saniyede maks 30 istek
            300  => 50,  // 300 saniyede maks 50 istek
            3600 => 200  // 3600 saniyede maks 200 istek
        );
        if (!$fc->check($limitler, $ip)) {
            die('Too many requests. Please try later.');
        }
    } 
    catch (HTTP_FloodControl_Exception $e) 
    {
        die($e);
    }
    echo 'Hede hödö aşkı';
    ?>
    Test Dosyaları;
    flood.rar
  • 19-10-2009, 01:28:04
    #9
    devturkeli adlı üyeden alıntı: mesajı görüntüle
    @dnmtnk php bilgine bişey demeyeceğim fakat curl bilginin zayıf olduğu kanaatindeyim. Ben 7 yıldır kurumsal çalıştım, değil curl, sitedeki hemen hemen tüm sorunlarla zamanında haşır neşir olmuş bir insanım, kesin konuşmayalım bu şekilde, güldüm sadece dediğine.
    Her sayfa yenilemede rastgele veri yollanırsa aşağıdaki örnek hiç birşeye yaramaz.

    ayrıca şurayada bir göz at;
    http://zone.org/php/994-flood-icin-koruma.html
    devturkeli kardeşim, sanırım verdiğin linkteki şu mesajı kastediyorsun, evet curl çok yararlı bir modül, çok güzel işler yapıyor ama onun yapamadığı şeyler de var, o verdiğin linkte YNS inputtan değeri alıp bir kere post gönderebilir, diğer bir postu göndermek için kişinin koyacağı süre sonuna kadar beklemesi lazımdır. Eğer halâ "ben curl ile flood yapabilirim" diyorsan örnek bir betik yazalım, belki sen aşarsın, benim curl ile bilmediğim birşeyler vardır, yeni birşeyler öğrenirim, yada aşamazsın, sende birşeyler öğrenmiş olursun, ayrıca bir sınıf vermektense basitçe bu korumanın nasıl yapılacağını izah etsek daha şık olur