Jak se bránit komentářovému spamu (7. díl)
Po delší odmlce se vracíme k seriálu o vytváření městských webových stránek.
V posledních dílech jsme probírali různé možnosti interaktivity s čtenáři, návštěvníky webu, ať již se jednalo o ankety nebo o různým způsobem moderovanou komunikaci (diskuze, dotaz a odpovědi atd.).
Další díl seriálu o vytváření webových stránek se týká problematiky komentářového spamu.
Napsat program, který prolézá webové stránky, hledá v nich formuláře a do nich vyplňuje odkazy na stránky, které někdo chce propagovat, je velmi jednoduché a provoz levný. Jak se jako provozovatel webu bránit?
Pravděpodobně se již každý, kdo provozuje nějaký veřejný web s formuláři, setkal s některým z následujících problémů:
- Nesmyslné příspěvky v diskuzi, obvykle plné různých webových adres
- Podobně nesmyslné texty v objednávkách, žádosti o kontakt apod.
- Podivně vyhlížející e-mailové adresy, které někdo do vašeho formuláře zadal
- Podezřele mnoho hlasů v anketě
Většina z těchto situací má společného jmenovatele – automatický program, který prochází webové stránky, vyhledává určité prvky (formuláře) a vyplní je. Občas z toho nevznikne nic, občas se tento text na stránkách objeví – a o to autorům těchto programů jde. A i tam, kde je problém způsoben něčím jiným – například hlasování v anketě bývá obvykle dílem člověka – bude náprava situace podobná. Nástroje, které si popíšeme, nám umožní se bránit i proti těmto „záškodníkům“.
Roboti
Jak již bylo řečeno, vytvoření programu pro automatické procházení webových stránek (a případně provádění nějakých akcí) je jednoduché. Takové programy mohou být i velmi užitečné – například vyhledávací servery mají takové nástroje, které procházejí web stejným způsobem a indexují obsah. Některé z těchto nástrojů dokonce umí i odeslat formuláře.
Ale ani u těchto „hodných“ robotů někdy nechceme, aby se dostaly ke všem informacím na webu. Proto existuje konvence, dle které tvůrce webu může na serveru umístit speciální soubor robots.txt s informacemi, kam automatizované nástroje nemají mít přístup.
To však záleží pouze na tom, zda se tyto programy „rozhodnou“ informace z tohoto souboru vůbec načíst, a pokud ano, zda se jimi budou také řídit. Většina „zlých“ robotů to samozřejmě nedělá, a tak je třeba se bránit jinak. Příliš nám nepomůže ani identifikace programu – robota či prohlížeče – která je součástí každého požadavku.
Nic totiž nebrání tomu, aby i tato identifikace byla falešná a odpovídala třeba některému běžně používanému webovému prohlížeči, takže ani tímto způsobem nelze odlišit robota od běžného uživatele.
CAPTCHA
Řešení se v odborných kruzích obvykle označuje jako CAPTCHA. Jedná se o zkratku z Completely Automated Public Turing Test to Tell Computers and Humans Apart – neboli zcela automatický veřejný Turingův test na rozlišení člověka a počítače.
Nebudeme zde zabíhat do historie příliš podrobně, řekněme si, že obecný princip takového testu popsal anglický matematik Alan Turing již v polovině minulého století, a takové testy se používají pro rozhodnutí, zda se nějaký stroj chová „inteligentně“. Myšlenka testu spočívá v tom, zda dokážeme rozhodnout, jestli odpovědi dodává člověk nebo počítač.
V našem případě termínem CAPTCHA označujeme takový test, kterým rozlišíme člověka od počítače, přičemž test je zcela veřejný a automatizovaný (bez zásahu operátora). Nejčastěji je založen na problémech, které člověk hravě vyřeší, zatímco pro současné počítače jsou velmi obtížné – zejména analýza obrazových informací nebo porozumění psanému textu.
Nyní už jistě tušíte, kam mířím, neboť i když pro vás termín CAPTCHA může být neznámý, s jeho aplikací se jistě setkali všichni – nejčastější formou jsou obrázkové kódy, které musíte vepsat například při registraci do některých webových služeb, při odesílání sms zprávy, při zapisování reakce do diskuzního fóra a podobně – tedy právě v situacích, kdy před tím nebyla nijak ověřována vaše totožnost (přihlášení do systému), ale využíváte nějaký veřejně dostupný webový formulář.
Kódy v obrázku
Princip je velmi jednoduchý – zatímco automatické vygenerování obrázku, včetně případného „zašumění“ je výpočetně velmi snadné, zpětná analýza, aby z předloženého obrázku počítač určil samotný kód, je nesrovnatelně obtížnější. Na druhou stranu, člověk s tím obvykle nemá žádný problém.
Obvykle se setkáte s obrázky, které se i tak obtížnou úlohu snaží případným robotům ještě dále zkomplikovat – použití více barev, nepravidelný podklad, překrytí náhodnými body či křivkami nebo samotné překrývání písmen, to vše jsou metody, které analýzu obrazu komplikují.
Dlužno však říci, že někdy zkomplikují přečtení obrázkového kódu i lidským návštěvníkům stránek.
I tak je třeba říci, že dneska existuje řada aplikací, které zvládají analýzu obraových informací na velmi dobré úrovni, a i když nefungují zcela obecně, není problém je upravit pro konkrétní případ.
Proto se na tuto ochranu nedá pohlížet jako na určitou úroveň zabezpečení. Čím lákavější pro někoho bude se „dostat dovnitř“, tím spíše – a tím rychleji – vznikne aplikace, která analýzu příslušných obrázků zvládne.
Alternativy
Také je třeba myslet na alternativní vyjádření CAPTCHA kódů. Co když si vaše webové stránky bude prohlížet uživatel, který je nevidomý, nebo který má jinou zrakovou poruchu (například barvoslepost často rozeznávání barevných kódů velmi komplikuje)? I jemu by mělo být umožněno webové stránky používat a tedy se nějakým způsobem přes ochranu dostat.
Tomuto tématu zatím mnoho tvůrců webových stránek příliš pozornosti nevěnuje, ale konkrétní příklady již také můžeme najít – obvykle je daná informace prezentována hlasem. Uživatel si namísto obrázku stáhne třeba MP3 soubor, který je též automaticky generovaný a obsahuje stejnou informaci. Přitom analýza hlasu je složitostí srovnatelná s analýzou obrazu.
Další možnosti
Můžete se setkat ještě s dalšími typy ochrany před komentářovým spamem, například tak, že tuto ochranu běžný uživatel ani nezaregistruje, tedy nebude ani muset opisovat kód z obrázku. Takové řešení je založené obvykle na tom, že roboti, kteří stránky procházejí a vyplňují formuláře, obvykle neinterpretují Javascript.
Takže ochrana je do stránky vložena, ale pomocí skriptu je běžnému uživateli skryta, a zároveň je skriptem vepsána odpověď. Pokud uživatel nemá k dispozici prohlížeč, který skript interpretuje, nic se neděje, akorát bude muset odpovědět sám.
Leckdy se dokonce kombinuje více ochran zároveň, velmi vtipné jsou například metody založené na tom, že automatické nástroje vyplní všechna textová pole, která jsou k dispozici. Stačí tedy do stránky vložit pole označené textem, že má být obsah ponechán prázdný, nebo takové pole rovnou uživateli skrýt. Robot pole vyplní a tím se opět prozradí.
Závěrem
Určitá úroveň ochrany proti komentářovému spamu je dnes již na webu naprostou nezbytností, tedy alespoň pokud obsahuje veřejně dostupné formuláře. Může se totiž stát, že automatické nástroje dokáží vygenerovat několik set či tisíc záznamů denně, a prakticky není v lidských silách je ručně odstraňovat, ať již je výsledkem záznam v diskuzi, vyplněná „registrace“ nebo kontaktní formulář, který je odesílán elektronickou poštou.
Někdy může být cestou vynutit si registraci uživatelů, přičemž k samotnému formuláři se dostanou teprve po přihlášení (autentizaci).
Díly seriálu
- Vytváříme webové stránky města (1. díl)
- Vytváříme webové stránky města pomocí redakčního systému (2. díl)
- Nebraňme uživatelům v získání informací (3. díl)
- Web musí být vidět (4. díl)
- Ankety na webu (5. díl)
- Komunikace s návštěvníky webu (6. díl)
- Jak se bránit komentářovému spamu (7. díl)
Odpovědět na příspěvek