Visualizzazione risultati 1 fino 8 di 8

Discussione: Come posso bloccare gli accessi provenienti dai proxy?

  1. #1
    Guest

    Predefinito Come posso bloccare gli accessi provenienti dai proxy?

    Ciao a tutti.
    Ho bisogno di bloccare gli accessi provenienti dai vari proxy, questo per evitare che qualcuno possa falsare i sondaggi presenti sul sito.
    Come posso fare?

    P.S. Avendo una lista dei voti di un sondaggio (con IP/host e date e orari), come posso accorgermi dell'eventuale cambiamento dell'IP generato da un proxy?
    Per esempio, alcuni IP non hanno accanto nessun host...
    Ultima modifica di musicanapoli : 27-01-2011 alle ore 16.03.57

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    potresti costruire una funzione che controlla l'ip remoto in base ad una lista di ip proxy.La lista potresti scaricarla direttamente da url, da un server o più server proxy.
    Poi con la funzione file_get_contents prelevi il contenuto del file lista contenente gli ips proxy.

    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Predefinito

    Quindi, la risposta è "lascia stare"? :)

  4. #4
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    ci sono tanti modi per "bloccare" un proxy, ma non tutti i proxy sono realmente identificabili dall'header.

    1) ti crei delle condizioni tramite modRewrite
    2) ti crei una lista con gli ip che vuoi bloccare e tramite un file php filtri tutte le pagine
    3) controlli l'header e controlli se vi sono variabili che di solito aggiunge il proxy per interconnettere più terminali *attenzione alcuni reti (ad esempio quelle universitarie) usano molto spesso dei proxy, quindi bloccheresti il traffico anche da queste reti.
    4) per i proxy altamente anonimi non c'è nulla da fare, se non sapendo a priori gli indirzzi ip di questi.
    Ultima modifica di Xsescott : 27-01-2011 alle ore 17.35.53
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  5. #5
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    io non ho detto di lasciar stare!

    c'è già qualcosa di costruito, da cui si può prendere spunto, per es. guarda questa funzione...che non ho costruito personalmente:

    Codice PHP:
    <?
    /**
    * TOR BLOCK Function
    *
    * @access public
    * @param ip
    * @return true/false
    */
    public function check_proxy($ip)
    {
    //BLOCK TOR
    $file = ROOT_HTTP_PATH . PROTECTION_PATH . 'cache/' . "list.php";
    if (@
    file_exists($file)) {
    $proxy_list = file_get_contents($file);
    $tor_exit_node_list = $proxy_list;
    preg_match('/<!(.*)!>/', $proxy_list, $time_created);
    if (
    date('G') > trim($time_created[1])) {
    unset(
    $tor_exit_node_list);
    unlink($file);
    $tor_exit_node_list = file_get_contents('http://torstatus.kgprog.com/ip_list_exit.php/Tor_ip_list_EXIT.csv');
    $tor_exit_node_list = '<?die;?>' . "\n" . '<!' . date('G') . '!>' . "\n" . $tor_exit_node_list;
    file_put_contents($file, $tor_exit_node_list);
    }
    } else {
    $create = file_get_contents('http://torstatus.kgprog.com/ip_list_exit.php/Tor_ip_list_EXIT.csv');
    $create = '<?die;?>' . "\n" . '<!' . date('G') . '!>' . "\n" . $create;
    file_put_contents($file, $create);
    $tor_exit_node_list = $create;
    }
    $ip_tor = explode("\n", $tor_exit_node_list);
    foreach (
    $ip_tor as $tor_ip) {
    if (
    $tor_ip == $ip) {
    if (
    self::$settings["en_logging"] == 'checked') {
    self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
    }
    return
    true;
    }
    }

    //X-Forwarded-For Checking
    if (self::$settings['en_x_forwared_f'] == 'checked') {
    $forwaded = array($_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_X_FORWARDED'],
    $_SERVER['HTTP_FORWARDED_FOR']);
    $forwaded = array_filter($forwaded);
    if (!empty(
    $forwaded)) {
    foreach (
    $forwaded as $forward) {
    if (
    substr($forward, 0, 7) != '192.168') {
    if (
    self::$settings["en_logging"] == 'checked') {
    self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
    return
    true;
    }
    }
    }
    }
    }

    //Port Checking
    if (self::$settings['remote_port_viewer'] == 'checked') {
    $ports = @explode(",", self::$settings['ports_to_check']);
    //Lucky eh?
    if (is_array($_SERVER['REMOTE_PORT'])) {
    foreach (
    $_SERVER['REMOTE_PORT'] as $port_to_check_if_exists) {
    foreach (
    $ports as $port) {
    if (
    $port_to_check_if_exists == $port) {
    if (
    self::$settings["en_logging"] == 'checked') {
    self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
    }
    return
    true;
    }
    }
    }
    } else {
    foreach (
    $ports as $port) {
    if (
    $_SERVER['REMOTE_PORT'] == $port) {
    if (
    self::$settings["en_logging"] == 'checked') {
    self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
    }
    return
    true;
    }
    }
    }
    }
    //lets check for open ports now
    if (self::$settings['en_port_checking'] == 'checked') {
    $ports = @explode(",", self::$settings['ports_to_check']);
    foreach (
    $ports as $port) {
    if (@
    fsockopen($ip, $port, $errno, $errstr, 2)) {
    //Open Port Found... Proxy Behind. Block user
    if (self::$settings["en_logging"] == 'checked') {
    self::write_log("User With Pseudo-IP: " . $ip . " is behind a proxy!");
    }
    return
    true;
    }
    }
    }
    return
    false;
    }
    ?>
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  6. #6
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,556

    Predefinito

    http://www.darkwolf.it/proxy.txt

    Purtroppo funziona talmente tanto bene (dico davvero, nessun proxy sembra riuscire a passare) che capita blocchi anche molti mobile (quindi non lo ho più applicato ed ho solo bloccato alcuni noti proxy).

    Esempio: http://anonymouse.org/cgi-bin/anon-w...w.darkwolf.it/
    Codice:
    # Block Anonymouse
    RewriteCond %{HTTP_USER_AGENT} Anonymouse [NC]
    RewriteRule .* - [F]
    Ultima modifica di darkwolf : 27-01-2011 alle ore 17.52.55

  7. #7
    Guest

    Predefinito

    Intanto ringrazio tutti per aver risposto.
    Farò qualche prova, queste modifiche le dovrei fare all'interno di Wordpress, ecco quale potrebbe essere il problema... e comunque mi servirebbe bloccare le visite dai proxy giusto per un piccolo periodo.

    @EuroSalute: no, è che da quello che avevo letto nel tuo messaggio, mi sembrava qualcosa di poco fattibile per me!

    Un'altra cosa... come già detto, i sondaggi che ho, salvano l'indirizzo ip, l'host, le date e gli orari.
    Nei logs ho visto che in alcuni casi ci sono solo gli indirizzi IP e l'host non è registrato.
    A distanza di 1/2 minuti ci sono voti di cui l'inizio dell'indirizzo IP è uguale (ovvero i primi 3 numeri).

    La mia domanda è: come faccio a capire se ci sono dei voti falsi?
    Questi indirizzi IP che non hanno host sono per caso provenienti da proxy?
    Ultima modifica di musicanapoli : 01-02-2011 alle ore 02.19.39

  8. #8
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    avevo realizzato una semplice funzione per controllare il vero Ip address degli utenti, la funzione è questa:
    Codice PHP:
    <?
    //new 02/01/2010
    function getRealIpAddr()
    {
    //check ip from share internet
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) $ip_real=$_SERVER['HTTP_CLIENT_IP'];
    //to check ip is pass from proxy
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip_real=$_SERVER['HTTP_X_FORWARDED_FOR'];
    else
    $ip_real=$_SERVER['REMOTE_ADDR'];
    return
    $ip_real;
    }
    //end
    ?>
    poi controlli l'host con :
    Codice PHP:
    <?
    $ip_real
    =getRealIpAddr();
    $host_ip_real = gethostbyaddr($ip_real);
    ?>
    In questo modo puoi sapere se l'utente sta utilizzando una connessione tramite proxy o tramite postazione diversa dalla sua o ip condiviso.

    Secondo me host name dovresti averlo sempre, può coincidere con l'ip address, ma dovresti averlo.
    Quindi prima di tutto controlla la funzione che registra l'ip address e l'host name degli utenti.

    Guarda anche questa funzione da php.net:
    Codice PHP:
    <?

    function getRemoteInfo () {
    $proxy="";
    $IP = "";
    if (isSet(
    $_SERVER)) {
    if (isSet(
    $_SERVER["HTTP_X_FORWARDED_FOR"])) {
    $IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
    $proxy = $_SERVER["REMOTE_ADDR"];
    } elseif (isSet(
    $_SERVER["HTTP_CLIENT_IP"])) {
    $IP = $_SERVER["HTTP_CLIENT_IP"];
    } else {
    $IP = $_SERVER["REMOTE_ADDR"];
    }
    } else {
    if (
    getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
    $IP = getenv( 'HTTP_X_FORWARDED_FOR' );
    $proxy = getenv( 'REMOTE_ADDR' );
    } elseif (
    getenv( 'HTTP_CLIENT_IP' ) ) {
    $IP = getenv( 'HTTP_CLIENT_IP' );
    } else {
    $IP = getenv( 'REMOTE_ADDR' );
    }
    }
    /*if (strstr($IP, ',')) {
    $ips = explode(',', $IP);
    $IP = $ips[0];
    }*/
    $RemoteInfo[0]=$IP;
    $RemoteInfo[1]=@GetHostByAddr($IP);
    $RemoteInfo[2]=$proxy;
    return
    $RemoteInfo;
    }
    ?>
    Ultima modifica di EuroSalute : 01-02-2011 alle ore 12.36.47 Motivo: più info
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •