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
Copyright © 2015-2024 SOCL.cz, RSS 2.0
Všechna práva vyhrazena, nebo tak nějak.