Smitka development

Postřehy z boje proti komentářovému spamu

Již nějaký čas se zabývám bojem proti komentářovému spamu. Na svých stránkách již cca rok sleduji aktivitu spamových botů a ze tento rok jsem na několika dalších webech nasazoval antispamovou ochranu. Od 18.1.2009 zda sleduji chování spambotů podrobněji a po nasbírání dostatečného počtu vzorků provedu vyhodnocení.

Použité metody

Používám několik typů ochrany, které různě kombinuji:
  1. Nastražené políčko formuláře, skryté css s "pěkným" jménem - používám nick, pokud je políčko vyplněno jedná se o bota
  2. Políčko v početním příkladem vyplněné javascriptem a skryté - po načtení je do políčka vložen výsledek příkladu, který používám buď statický, nebo generovaný z session_id
  3. Nastrčený schovaný submit pře opravdovým submitem, pokud byl formulář odeslán tímto submitem, jedná se o bota
  4. Kontextový filtr na straně serveru
Podrobnosti v minulém článku

Zhodnocení účinnosti

Kupodivu jsem zjistil, že v současné době je dostačující ochrana nastrčeným políčkem NICK. Všechny boty mi toto políčko vyplnily. Použily tam většinou stejnou hodnotu jako v poli jméno/name, do políček s neznámým name vkládali náhodnou hodnotu. Pravděpodobně to vychází z toho, že nechtějí riskovat, že by nevyplnily nějaká povinná políčka. Na svých stránkách tato ochrana vždy zareagovala jako první a dále nebylo potřeba nic řešit. Další výhodou je opravdu jednoduchá implemetace. Stačí do odesílacího formuláře propašovat jedno políčko skryté css a v nejjednodušším případě do zpracovávacího skriptu přidat na začátek například:
if(isset($_POST["nick"]) && $_POST["nick"]!="" ) die("Bez pryc bote!" );
Z přijatých hodnot se také ukázalo, že by zareagovala správně i obrana javascriptem. Na stránkách, kde jsem nedával políčko, tak si žádný bot s javascriptem neporadil a vyplnil náhodnou hodnotu, nebo nějaké URL. Tato metoda je o trošku složitější na implementaci, jelikož je potřeba prvek skrývat javascriptem, vygenerovat příklad a porovnat ho i na straně serveru. Pro boty bez javascriptu však představuje nepřekonatelnou překážku.

Podstrčený submit proti botům funguje také, většina botů poslala formulář prvním submitem, někteří boti, kteří stránku již znali posílali spam původním, bylo to však jen malý zlomek. Tato ochrana má však jeden vážný nedostatek. Pokud uživatel vyplňuje formulář bez myši a odešle jej enterem z textového pole, je použit také první definovaný submit a uživatel je chybně považován za bota. Lze to napravit použitím textarey místo inputu, která na enter reaguje novým řádkem a ne odesláním formuláře.

Kontextový filtr jsem vylepšil tím, že zvyšoval skóre u krátkých příspěvků (např. pod 20znaků spamindex*2), protože se nikdy nic nedostalo až k němu, nemůžu říci procentuální úspěšnost, ale když jsem namátkově zkoušel aplikovat ho na zablokované příspěvky a vždy jim přiřadil odpovídající skóre. Ve výsledcích probíhajícího testu bude samozřejmě zhodnocení úspěšnosti tohoto typu ochrany. Myslím, že kontextový filtr není špatné doplňkové řešení, které může odstranit i některé živé spamery.

Zajímavé postřehy

  • Ip adresy opravdu blokovat nemá smysl, snad každý příspěvek měl unikátní IP
  • Jedním z navrhovaných postupů bylo sledovat časy mezi vstupem na stránku a odeslání komentáře botem, tyto hodnoty se na mém webu pohybovaly od 4s do 47s (to se již kreje s normálním uživatelem). Další návrh byl sledovat referal, myslím že to není dobré řešení, protože i normální uživatel vstoupí na stránku přímo (hlavně když prohlížeč doplňuje již navštívené stránky) a také (aspoň na mém webu, kde to vidím) roboti nejdřív vstoupili na nejdřív na stránku a až pak odeslali formulář
  • Občas nejdřív přišel krátký komentář, bez zlých slov (a viděl jsem i vytvořený z obsahu původní stránky) a odkazů a když prošel, tak robot spustil útok.
  • Na tomto webu loguji identifikátor prohlížeče a ve velké většině je Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
  • Odkazované stránky jsou většinou napadené reálné weby, kde se pak tváří že nabízí pornografii a stahují se z nich soubory typu blablaXXXbla.mpeg.exe s různými trojany.
  • Zkoušel jsem několikrát napsat majitelům webů a občas i zareagovali :-)

První výsledky

Udělal jsem menší statistiku ze 155 spamů, podle toho jaký typ ochrany by je zachytil.

spamy odifiltrované nick políčkem - 155
spamy odfiltrované js příkladem - 155
spamy, které použily první nastrčený submit - 154
spamy, které nepoužily žádný submit (přímý přístup) - 1
spamy ofiltrované kontextovým filtrem (nad 20 bodů) - 155
nejnižší spam-score - 23
nejvyšší spam-score - 307
nejčastější jména - TestName (17), teen (4), tiava (3), youtube (3)
nejčastější user agent - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) (155)
počet IP adres, které se objevily 2× - 9
počet IP adres, které se objevily 3× - 1
počet IP adres, které se objevily vice než 3× - 1
nejčastější IP - 212.62.97.23 (13)
nejčastější řetězce: com (477), http (468), href (465), www (260), livevideo (170), teen (118), vidilife (95), notlong (88), preteen (58)



pocitadlo spamu

linkuj.czjagg.czpošli na vybrali.sme.skdeliciousTopČlánky.cz
Nahoru HOME PC•Elektro Programování Blog Autor Lynt Speciální backlink: Šulislav
© 2006 Smitka development