SOCL.cz
blog nejen o Internetu

Detekce IP adresy sítě TOR v PHP

publikováno 14. 2. 2015 v 20:29 (aktualizováno 27. 7. 2022)

V důsledku enormního nárůstu komentářového spamu u jednoho svého staršího projektu jsem se rozhodl zablokovat všechny přispěvatele, kteří přichází přes anonymizační síť TOR - řešení v PHP je jen na pár řádek.

Nikdy bych si nepomyslel, že někdy budu TOR na některém svém webu blokovat, protože jsem dlouholetým spokojeným uživatelem zmíněné anonymizační sítě a mám k ní pozitivní vztah. Ale co je moc, to je moc. Napsat si funkci, která kontroluje, zda je návštěvník připojen přes TOR, může vypadat třeba následovně:

function is_tor($ip) {
    $tor_query = implode('.', array_reverse(explode('.', $ip))) . '.dnsel.torproject.org';
    $addr = gethostbyname($tor_query);
    if ($addr != $tor_query && $addr != "127.0.0.1" && ip2long($addr) >> 24 == 127) return true;
        else return false;
}

if(is_tor($_SERVER['REMOTE_ADDR'])) die('No more spam!');

Dotazujeme se veřejné služby TorDNSEL, která slouží jako DNS-based seznam exit nodů sítě TOR. Pro sestavení dotazu potřebujeme IP adresu našeho serveru, dále port, na kterém náš webový server běží a IP adresu, na kterou se ptáme (připomínám, že pracujeme s IPv4 adresami). Pokud obdžíme odpověď, která začíná 127 a současně neodpovídá 127.0.0.1, patří IP adresa do sítě TOR a vy ji můžete zablokovat nebo omezit.

štítky: anonymita bezpečnost Internet PHP relay spam TOR
5457x přečteno

Komentáře k článku (0)

Zatím nikdo nic nenapsal, chcete být první?
Vaše jméno/přezdívka: (max 40 znaků)

Web: (nepovinné, zadejte s http(s)://, max 100 znaků)

Opiště sekvenci znaků:

captcha!

Zde napište komentář: (max 512 znaků)

Copyright © 2015-2024 SOCL.cz, RSS 2.0 RSS kanál blogu
Všechna práva vyhrazena, nebo tak nějak.

WEDOS BANNER