Pagina 2 din 3 PrimulPrimul 123 UltimulUltimul
Rezultate 11 la 20 din 23

Subiect: Script anti flood

  1. #11
    Avatarul lui Federals
    Federals este deconectat Ambasador
    Reputatie:
    35
    Data înscrierii
    29th November 2007
    Locaţie
    Bucuresti
    Posturi
    612
    Putere Rep
    35


    Implicit

    Interesant script, mersi!

  2. #12
    Avatarul lui anubis
    anubis este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    5th December 2007
    Locaţie
    Iasi
    Vârstă
    35
    Posturi
    160
    Putere Rep
    34


    Implicit

    dupa cum am spus, m-am tinut de cuvant si am adus o varianta imbunatatita.

    codul este urmatorul:
    Cod PHP:
    <?php
    if (!isset($_SESSION)) {
        
    session_start();
    }

    // getting informations about user
    $useragent $_SERVER['HTTP_USER_AGENT'];
    $bots "google msnbot lycos scooter fast-webcrawler technorati yahoo bloglines blogsearch gigabot";

    function 
    get_ip(){
    // check if the user's information is already in file
        
    $ip getenv("REMOTE_ADDR");
        
    $file "ipb.txt";
        
    $fr fopen($file"r") or exit("Fisier indisponibil!");
        
    $data fread($frfilesize($file));
        
    fclose($fr);
        if (
    strpos($data,$ip) == FALSE) {
        
            
    // writing the user's information in a file
            
    $fw fopen($file"a") or exit("Fisier indisponibil!");
            
    fwrite($fw"\n" $ip "; ");
            
    fclose($fw);
            }
            
        else {
        
    $ippos strpos($data,$ip);
        
    $pv strpos($data,';',$ippos);
        
    $n strlen($data);
        
    $j==0;
        for(
    $i=0$i<$n$i++){
            if(
    $i==$pv+2){
                
    $datan[$j]="*";
                
    $datan[$j+1]=$data[$i]; $j+=2;
                }
            else{
                
    $datan[$j]=$data[$i]; $j++;
                }
            }
        
    $frw fopen($file"w") or exit("Fisier indisponibil!");
            for(
    $i=0;$i<$j;$i++){
                
    fwrite($frw$datan[$i]);
                }
        
    fclose($frw);
        
    $datan='';
        }
    }

    // check if the user it's a crawler bot
    if (strpos($bots,$useragent) == FALSE) {

    // anti flood protection
    if($_SESSION['last_session_request'] > time() - 4){
            
    $_SESSION['last_session_request'] = time();
                
    header("location: /antiflood.html"); get_ip();
                exit; 
            
        }
    }

    $_SESSION['last_session_request'] = time();
    ?>
    este recomandat ca acest cod sa il salvati intr-un fisier antiflood.php si sa il includeti in headerul fiecarei pagini a siteului dvs. cu functia <?php include ("locatie_fisier_antiflood.php"); ?>. Ori puteti copia codul si sa il inserati in header.

    Nu uitati sa scrieti un fisier antiflood.html in care sa precizati userului ca a intrat de mai multe ori intr-o perioada mica de timp si anume 4 secunde. Puteti modifica cum vreti voi in cod. Cautati linia cu
    Cod:
    if($_SESSION['last_session_request'] > time() - 4){
    si modificati 4 in cate secunde vreti voi.

    IMPORTANT
    Deschideti un fisier txt, si scrieti in el '// IP-uri //' si dati enter sa ramana cursorul pe urmatoarea linie. Salvati fisierul sub numele de ipb.txt, uploadati pe server fisierul in acelasi director unde ati pus si antiflood.php, si schimbatii permisiunile in 777.

    Am atasat la acest post si fisierele, in caz ca va este lene sa copiati de mai sus, sau faceti greseli. Fisierul antiflood este uploadat in extensia .txt din cauza permisiunii asupra fisierelor php. Nu este suportata de upload. Redenumiti .txt in .php dupa download.

    ---------------------------------------------------------------------
    Sa va explic ce face scriptul.
    1. Daca userul intra de mai mult de 1 data in aceeasi pagina in interval de 4 secunde, este redirectionat la o pagina de avertizare, unde il atentionati sa nu mai faca acest lucru. Intre timp scriptul,
    2. Ia informatii despre user cum ar fi ip, useragent.
    3. Daca useragentul este cel al botilor crawler ar motoarelor de cautare, cum ar fi google, yahoo, msn, technorati, altavista, etc. este lasat in pace, nu il mai redirectioneaza.
    4. Daca useragentul nu se potriveste cu cel al botilor, ip-ul userului este luat si:
    5. Daca ip-ul nu este in fisier, il trece la urma.
    6. Daca ip-ul este deja in fisier, inseamna ca acel user a mai creeat aceeasi problema, si ii pune in dreptul ip-ului o '*'.

    Cam atat.

    Oricand doriti, puteti deschide fisierul ipb.txt si sa vedeti ipurile celor care au facut acest lucru, iar la cei care au multe '*' ii puteti bana, astfel impiedicand acelui user sa mai floodeze.

    Daca aveti intrebari postati aici.

    Bafta.

    EDIT: Daca voi avea in viitor o lista cu toate ipurile botilor ale motoarelor de cautare, voi face selectia dintre useri/boti dupa ip. Momentan nu detin asa o lista.
    Fișiere atașate Fișiere atașate
    Ultima modificare făcută de anubis; 17th July 2008 la 16:08.
    "Wise man talk because they have something to say. Fools, because they have to say something."

  3. #13
    Avatarul lui pitagora
    pitagora este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    18th January 2008
    Locaţie
    Cluj
    Vârstă
    40
    Posturi
    71
    Putere Rep
    34


    1 out of 1 members found this post helpful.

    Implicit

    scriptul tau nu blocheaza flooderii absolut de loc. El blocheaza doar utilizatori nevinovati!

    Hai sa va dau ca exemplu un tipic de utilizare a calculatorului de catre lume "habarnista". Mama de exemplu crede ca pe hyperlink-uri trebuie dat dublu click ca si pe icoane. Cred ca i-am zis de 1000 de ori ca nu trebuie dar zice ca e deja din obisnuinta. Acelasi lucru il face si tata uneori desi el lucreaza in proiectare (pe calc cu softuri CAD) si nu poti sa zici ca e prima oara ca vede un browser. Acelasi lucru l-am mai observat la alte astefl de persoane.

    Evident daca se face un dublu click se fac 2 requesturi consecutive si se va afisa pagina aia de antiflood.

    Daca crezi ca cei mai putin tehnici sunt singurii cu problema asta te inseli. Eu as pica la fel pentru ca pe un site de articole de exemplu daca vad 2 link-uri catre articole care vreau sa le citesc le deschid pe amandoua in tab-uri diferite (cu ctrl+click pe link). Asa citesc orice forum inclusiv acesta. Daca cineva ar verifica logurile ar vedea ca eu fac 4-5 requesturi in 2-3 secunde si dupa fac o pauza mare sa le citesc. Este flood? Nu? E un obicei care e asa de inradacinat ca daca un forum m-ar pune sa-l schimb cu o asemenea politica antiflood as schimba forumul mai degraba.

    Mai rau ai neglijat un aspect cand ai facut scriptul! Scriptul tau e totaly worthless pentru ca se bazeaza pe sesiune. Tu n-ai inteles modul de functionare a sesiunii si faptul ca doar programele "well behaved" se tin de ea.

    Cum se pastreaza sesiunea? De unde stie server-ul ca tu ai deja o sesiune si sa nu creeze una noua? Pentru ca clientul trebuie sa trimite un cookie cu session id-ul. Duh! Si cine trimite aceste cookie-uri? Cei care folosesc browsere si navigheaza site-ul pe bune. Eu nu stiu cum ganditi voi dar daca eu as sta sa fac o program de flood nu m-as chinui ore intregi sa implementez cookie management doar ca sa il poti tu bloca din php. Nici botul google nu trimite cookie-uri!!!

    Acuma ti-ai dat seama de ce nici un site mare nu implementeaza un astfel de mecanizm. Pentru ca ar trebui sa fie bazat pe IP si sa aiba baza de date in spate. Nunumai ca poti bloca isp-uri intregi care ies prin acelasi proxy dar si tari! Nu-mi vin acuma exemple dar sunt din pacate. Si pe langa asta ai nevoie si de conexiune la SQL ceea ce vroiai tu sa eviti din start si este singurul tip de flood care poate fi oprit. Daca cineva vrea sa iti consume banda oricum va alege o poza mare sau alt fisier mai mare care sa-l descarce la infinit.

    Prin urmare ti-ai cam pierdut timpul cu scriptul ala pentru ca singurii pe care ii blochezi sunt cele 2 categorii de oameni de mai sus!

    Daca stau sa fiu rau si sa analizez scriptul tau din partea atacatorului faptul ca tu pui variabile in session automat la fiecare request il ajuta. Daca face 1 milion de requesturi nunumai ca ti-a creat 1 milion de sesiuni dar variabila aia o sa apara de 1 milion de ori...in ram. Se vezi ce incantat o sa fie hoster-ul tau. Pe de alta parte daca iti face 1 milion de request-uri oricum iti inchid astia contul pentru ca iti depasesti cpu limit-ul asa ca nu mai conteaza.
    Ultima modificare făcută de pitagora; 19th July 2008 la 12:20.

  4. #14
    Avatarul lui evolution
    evolution este deconectat Membru SeoPedia
    Reputatie:
    40
    Data înscrierii
    29th October 2006
    Locaţie
    Bucuresti
    Posturi
    997
    Putere Rep
    40


    Implicit

    pitagora,stii o alta solutie mai buna ?

  5. #15
    Avatarul lui pitagora
    pitagora este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    18th January 2008
    Locaţie
    Cluj
    Vârstă
    40
    Posturi
    71
    Putere Rep
    34


    Implicit

    Citat Postat în original de evolution Vezi Post
    pitagora,stii o alta solutie mai buna ?
    pai nu ati inteles ideea? Site-urile mari nu folosesc astfel de chestii pentru o implementare buna e foarte grea (identificarea trebuie facuta dupa ip nu user si trebuie folosita baza de date). Daca identifici un user dupa ip risti sa blochezi proxy-uri mari prin care ies isp-uri, orase sau chiar tari doar pt ca 2 useri din acea retea sunt pe site deodata.

    Nu asa te protejezi de flood. Se folosesc firewall-uri si IDS-uri deobicei la nivel de provider. Un astfel de IDS ar trebui sa identifice un atac dupa o logic mult mai complexa si sa baneze ip-ul definitiv din firewall astefl incat sa nu se mai accepte conexiuni de la atacator.

    Logica pe baza de sesiune este absolut inutila! Nu este nici un motiv pentru care programul de flood sa trimite session id in request!
    Ultima modificare făcută de pitagora; 19th July 2008 la 13:13.

  6. #16
    Avatarul lui B3aT
    B3aT este deconectat Membru SeoPedia
    Reputatie:
    35
    Data înscrierii
    28th August 2007
    Locaţie
    Berceni
    Posturi
    185
    Putere Rep
    35


    Implicit

    am facut si eu un astfel de script, dar foloseste BD si e dupa ip.
    Nu e dupa numarul de secunde intre vizite ci dupa numarul de pagini vazute / la un nr de secunde.
    Am si o lista de ~1300 clase C de ip-uri ale botilor msn.google yahoo luate "manual" de mine.
    Daca mai vrea cineva sa ajute la optimizat si mai ales testat (cine are programe de flood, scanat etc) sa zica. pe aici sa nu ma bag peste acest script.

    marea gaura in scriptul pus de anubis este useragentul, programele de scanare au useragent custom, scrii tu acolo ce vrei (google,msn..).

  7. #17
    Avatarul lui anubis
    anubis este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    5th December 2007
    Locaţie
    Iasi
    Vârstă
    35
    Posturi
    160
    Putere Rep
    34


    Implicit

    da stiu beat. nu a fost o idee buna sa fac selectie dupa useragent. Dar nu detin o lista cu ipuri ale botilor, si nu am folosit baza de date, pentru ca am vrut ca scriptul sa fie cat mai simplu, si sa poata fi utilizat de catre oricine, indiferent ca are acces la o baza de date sau nu.
    "Wise man talk because they have something to say. Fools, because they have to say something."

  8. #18
    Avatarul lui B3aT
    B3aT este deconectat Membru SeoPedia
    Reputatie:
    35
    Data înscrierii
    28th August 2007
    Locaţie
    Berceni
    Posturi
    185
    Putere Rep
    35


    Implicit

    da dar "oricine" nu are ce sa protejeze, parerea mea.

    Cel pus de Netul este bun, adaugat la faptul ca un server are conexiuni maxime per ip, ofera destula protectie, simplu si la obiect.
    Pitagora ai incurcat Sesiunile cu Cookieurile.

  9. #19
    Avatarul lui anubis
    anubis este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    5th December 2007
    Locaţie
    Iasi
    Vârstă
    35
    Posturi
    160
    Putere Rep
    34


    Implicit

    scriptul de mai sus e la fel cu cel pus de Netul, adaugat in plus la el faptul ca face diferenta dintre boti si useri dupa useragent si scrie ipurile intr-un fisier txt. Nu vad nici o diferenta majora intre acesta si celalalt.
    Amandoua scripturile functioneaza pe acelasi principiu.
    "Wise man talk because they have something to say. Fools, because they have to say something."

  10. #20
    Avatarul lui B3aT
    B3aT este deconectat Membru SeoPedia
    Reputatie:
    35
    Data înscrierii
    28th August 2007
    Locaţie
    Berceni
    Posturi
    185
    Putere Rep
    35


    Implicit

    Protectia lui netul se aplica la toti (adica si la botii "buni",) iar peste a "ta" se poate trece.
    Nu exista pe lumea asta o protectie 100% buna. Pana si ebay a fost spart de un roman ..
    Vorba lui netul, nimic nu poate opri un flood, iar asta e treaba hostingului. Am vazut cum un hosting mare de la noi a fost ingenuncheat 2 sapt de niste baieti asa ca scripturile noastre pot oferi in cel mai bun caz o protectie anti incepatori.

Pagina 2 din 3 PrimulPrimul 123 UltimulUltimul

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Thread-uri Similare

  1. anti frame breaker script
    De warrior în forumul Client side
    Răspunsuri: 2
    Ultimul Post: 20th December 2009, 12:25
  2. campanie anti nesimtiti :))
    De Adrian Poputoaia în forumul Bar, lobby...
    Răspunsuri: 4
    Ultimul Post: 17th September 2008, 15:55
  3. Anti SPAM
    De DubluQ în forumul SPAM made in .RO
    Răspunsuri: 4
    Ultimul Post: 13th March 2008, 02:36
  4. anti plagiat!
    De fabby în forumul Plagiat
    Răspunsuri: 23
    Ultimul Post: 31st January 2008, 11:38
  5. Script Anti-scan
    De B3aT în forumul Server side
    Răspunsuri: 10
    Ultimul Post: 29th October 2007, 18:52

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •