Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [PILLOLA] Protezione da spamming con $_SERVER['HTTP_ACCEPT_LANGUAGE']

    Ciao a tutti, finalmente è arrivato anche il mio momento per provare a scrivere una supposta...ehm una pillola.
    Ho deciso di riportarvela, poichè in un mio forum, dopo che non l'ho più controllato per 2 settimane, mi si sono iscritti più di 100 utenti, bellissimo vero?
    Peccato che tutti questi clienti, erano per lo più inglesi o non so di quale nazione, postavano i propri siti porno e/o altre cavolate...
    Allora pensai di provare a programmare qualcosina, riferendomi a questo topic:

    http://forum.html.it/forum/showthrea...hlight=nazioni


    Ovviamente ciò che sto per riportare si può integrare per esempio con guestbooks o altro in cui l'utente possa inserire dei dati.
    A questo punto iniziamo con lo script.
    Allora questo è un backup che vi ho fatto che contiene una tabella, con campi (id,prefisso,nazione,actived).
    Copiatelo e incollatelo nel vostro programma di amministrazione database così fate prima
    Codice PHP:
    CREATE TABLE `nazioni` (
      `
    idmediumint(9NOT NULL auto_increment,
      `
    prefissovarchar(30) default NULL,
      `
    nazionevarchar(80) default NULL,
      `
    activedvarchar(40NOT NULL default '',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;

    -- 
    -- 
    Dump dei dati per la tabella `nazioni`
    -- 

    INSERT INTO `nazioniVALUES (3'af''af''1');
    INSERT INTO `nazioniVALUES (4'ar''arabic''1');
    INSERT INTO `nazioniVALUES (5'bg''bulgarian''1');
    INSERT INTO `nazioniVALUES (6'ca''catalan''1');
    INSERT INTO `nazioniVALUES (7'cs''czech''1');
    INSERT INTO `nazioniVALUES (8'da''danish''1');
    INSERT INTO `nazioniVALUES (9'de''german''1');
    INSERT INTO `nazioniVALUES (10'el''greek''1');
    INSERT INTO `nazioniVALUES (11'en''english''1');
    INSERT INTO `nazioniVALUES (12'es''spanish''1');
    INSERT INTO `nazioniVALUES (13'et''estonian''1');
    INSERT INTO `nazioniVALUES (14'fi''finnish''1');
    INSERT INTO `nazioniVALUES (15'fr''french''1');
    INSERT INTO `nazioniVALUES (16'gl''galician''1');
    INSERT INTO `nazioniVALUES (17'he''hebrew''1');
    INSERT INTO `nazioniVALUES (18'hi''hindi''1');
    INSERT INTO `nazioniVALUES (19'hr''croatian''1');
    INSERT INTO `nazioniVALUES (20'hu''hungarian''1');
    INSERT INTO `nazioniVALUES (21'id''indonesian''1');
    INSERT INTO `nazioniVALUES (22'it''italian''1');
    INSERT INTO `nazioniVALUES (23'ja''japanese''1');
    INSERT INTO `nazioniVALUES (24'ko''korean''1');
    INSERT INTO `nazioniVALUES (25'ka''georgian''1');
    INSERT INTO `nazioniVALUES (26'lt''lithuanian''1');
    INSERT INTO `nazioniVALUES (27'lv''latvian''1');
    INSERT INTO `nazioniVALUES (28'ms''malay''1');
    INSERT INTO `nazioniVALUES (29'nl''dutch''1');
    INSERT INTO `nazioniVALUES (30'no''norwegian''1');
    INSERT INTO `nazioniVALUES (31'pl''polish''1');
    INSERT INTO `nazioniVALUES (32'pt''portuguese''1');
    INSERT INTO `nazioniVALUES (33'ro''romanian''1');
    INSERT INTO `nazioniVALUES (34'ru''russian''1');
    INSERT INTO `nazioniVALUES (35'sk''slovak''1');
    INSERT INTO `nazioniVALUES (36'sl''slovenian''1');
    INSERT INTO `nazioniVALUES (37'sq''albanian''1');
    INSERT INTO `nazioniVALUES (38'sr''serbian''1');
    INSERT INTO `nazioniVALUES (39'sv''swedish''1');
    INSERT INTO `nazioniVALUES (40'th''thai''1');
    INSERT INTO `nazioniVALUES (41'tr''turkish''1');
    INSERT INTO `nazioniVALUES (42'uk''ukrainian''1');
    INSERT INTO `nazioniVALUES (43'zh''chinese''1'); 
    A questo punto prendiamo un file e chiamatelo come volete:
    Codice PHP:
    <?php

    require ("connessione_database.php");
    $exp=explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    $select=mysql_query("SELECT * FROM nazioni Where actived='0' && prefisso='$exp[0]'",$db);


    if (
    $nazioni=mysql_fetch_array($select)) {


    Header("Location:block.php");
    exit;

    }
    else {


    Header("Location:guestbook.php");
    exit;

    }



    ?>
    Esempio di cosa riporta un "echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; "

    it,it-it;q=0.8,en-us;q=0.5,en;q=0.3

    --------------------------------------------
    --------------------------------------------
    Come potete notare, dopo essermi connesso al database e dopo aver effettuato la select, esplodo la stringa che riporta $_SERVER['HTTP_ACCEPT_LANGUAGE'] e poi prendo $exp[0] che conterrebbe 'it' (quindi il primo valore dell'array) nella stringa che vi ho appena fatto vedere, poi, controllo se $exp[0] è settato a 1, se non è settato 1, faccio una redirect in block.php, che è la pagina che dice all'utente "ADDIO John, non puoi entrare!", altrimenti lo facciamo scrivere nel nostro guestbook o quel che sia.

    Spero che vi sia piaciuta la mia pillolina, è la prima che scrivo e sono piuttosto giovane, spero che abbiate capito quello che ho scritto.
    Adesso tocca a voi provare.
    Aspetto le vostre impressioni e sicuramente molti di voi la sapranno migliorare con il loro sapere, io mi fermo qui perchè ho molte cose da imparare.

    Ciao e grazie per l'attenzione

    Alberto
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  2. #2
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    interessante, ma bloccare gli utenti stranieri sul proprio sito nn va contro la logica di internet?

  3. #3
    Ciao, si, ma tu puoi con questo metodo decidere sempre quando attivare o no un determinato utente, magari quando l'amministratore non può controllare un sito per un pò di tempo come è successo a me.
    Ovviamente consiglio questo metodo per aree meno tenute sott'occhio dall'amministratore, quanti inglesi spammano sui guestbooks e scrivono una infinità di messaggi...
    Anch'io sono d'accordo con te, ma almeno con questo metodo si può prevenire qualcosa.

    Ciao e grazie di avermi risposto

    Un saluto

    Alberto
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  4. #4
    non è male come idea, anche se effettivamente se in un sito almeno l'inglese dovrebbe essere concesso..

    cmq, visto che lo spam che arriva è tutto in inglese (e quindi servirebbe a poco), io aggiungerei una bella tabella con i filtri sulle parole, tipo "viagra", "sex" e cose simili..

    al momento del post nel guestbook si controlla l'input e se non contiene nessuna delle parole in tabella si posta.. che ne dite?
    ciao

  5. #5
    Si, anche la tua è una bella idea, fare un replace dell'input, poi magari si potrebbe usare lo stesso script che ho fatto io, anche per creare un sito multilingue nn vi pare?

    Ciao e grazie anche a te per aver risposto

    Alberto
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.