Komentářový spam útočí
Můj weblog je pod palbou spamerů a zatím snad palbě odolává. Jak dlouho ještě?
Pokud máte ve své RSS čtečce některý ze zdrojů s komentáři na tomto webu, tak jste si asi několikrát všimli, že to na mě zkouší komentářoví spameři. Nechtěl jsem nic nechat náhodě a zapracoval jsem na obraně proti spamu. Přestože formulář na přidání komentáře vypadá vcelku nevinně tak některé skryté položky jsou v něm navíc a slouží jen ke kladení pastí spamerům. Nedílnou součástí obrany je i malý slovník zakázaných slov. Postupně ho doplňuji ze spamu, který proklouzne.
Techniky spamerů jsou docela zajímavé. Dochází k oťukávání kdy na web dostanete několik komentářů, spamů, za týden a prostě je ručně smažete. Týdenní pauzy se zkracují a přibývá komentářů. Dnes jsem dostal 1068 komentářových spamů, ale jen devět jich proklouzlo ven. Považuju to docela za úspěch :-) Už jsem toho měl plné zuby a tak jsem poprvé změnil i url scriptu, který komentáře zpracovává. Příval spamů ustal jako mávnutím proutku, uvidíme na jak dlouho…
Související:
- Funkční javascriptová bariéra na komentářový spam – Jan Hučín, Šuplík, 10.7.2006
- Testuji komentářový antispam – Jiří Bureš, conBLOG, 1.11.2004
- Komentářový spam: další taktiky – Jiří Bureš, conBLOG, 24.11.2004
Jirka Ch | 6. Červenec 2006, 23:51 | „Články“ | Trvalý odkaz | Komentáře (53) | Štítky: komentáře, spam
Komentáře:
test spamu
Taky řeším problém s nárůstem spamu. Můj klientský filtr sice odolává, ale je to velká zátěž na připojení. Komentáře se mi totiž posílají jako e-mail :-) Jsem fakt na mrtvici, když mi přijde za jednu minutu přes tisíc spamů …
Zaútočili i na můj zcela bezvýznamnný, leč wordpressový blog. Zatím jsem zrušil komentáře pro neregistrované, v dohledné době ten blog asi zruším celý, byl to dost zbytečný pokus :-)
I spousta diskusí (AbcLinuxu, Jak psát web) a spoustu dalších blogů včetně mého. Je to hrozný boj. Plýtvat prostředky pro otravný spam.
Nelze než doufat, že je to přestane bavit.
Já jsem spam u sebe vyřešil nekompromisně. Mám ve formuláři pole, do kterého je třeba vyplnit určitou číslici. Tu vyplňuji javascriptem a pole následně skryji. Pokud je u klienta vypnutý javascript (tzn. roboti + cca 2% čtenářů), zůstane pole odkryté i s výzvou ke vložení číslice – člověk vloží, robot končí.
Mám to tak asi měsíc a od té doby neprošel jediný spam. Výhodami je, že filtrování probíhá na straně klienta a že drtivá většina lidí si žádného antispamu vůbec nevšimne.
Docela úleva po dnech, kdy docházelo pravidelně několik set nabídek na pochybné přípravky léčící erektilní dysfunkci.
Řešení není původní, inspiroval jsem se na diskusi JPW u Yuhůa.
To mám štěstí, že na Interval.cz spam není. A stačí tak málo – formulář se dvěma odesílacími tlačítky, kde to první slouží k zobrazení náhledu a to druhé k odeslání příspěvku. Zdá se, že spamboty tohle nějak nedokáží prokouknout ;–)
Mě se zatím dobře osvědčila právě ta metoda, kdy se jedno vstupní políčko u komentáře skryje pomocí css. Roboti většinou vyplňují všechna políčka a tak pokud vyplní i to schovaný, sami se usvědčí. Chodily mi denně desítky spamu a když jsem zavedl tuto „past“ tak to úplně ustalo a zatím se to drží (už přes měsíc)
Dero: Díky za tip, vyzkouším
Hellish: Tohle řešení jsem teď zkusil a nezabralo.
Já jsem na spam zatím vyzrál tak, že jsem si udělal databázi IP adres a zakázaných slov, kterou jsem asi měsíc doplňoval a teď už mám skoro tři měsíce klid
Mě funguje spolehlivě toto řešení: http://php.vrana.cz/…-diskusi.php
Taky jsem měl na guestbooku problém se spamem – nebyly to sice tisíce, ale 10 nebo 20 spamů denně i tak vadí.
Vyřešil jsem to pár zakázanýma slovama a protože jsem odpozoroval, že prakticky všechny spamy dávaly do komentáře spousty odkazů tak jsem udělal i jakýsi počítadlo odkazů v komentáři – když je v komentáři víc odkazů tak je příspěvek označen za spam a já potom rozhodnu zda se zobrazí nebo ho smažu (zatím za několik měsíců neprávem dostaly označení spamu asi 3 normální komentáře a několik set opravdových spamů).
Asi měsíc spamům trvalo než pochopily, že neprorazí a od té doby ticho po pěšině – musím to zaklepat na dřevo, ale jakmile měsíc neprošel prakticky žádnej spam, tak prostě na moje stránky zapomněli.
Taky jsem to začal schytávat na webu.
Nejdřív to byly dva typy komentářů, tak jsem jim odchytal klíčový slova a konec.
Za měsíc na to začaly chodit další, bohužel klíčových slovy by se tentokrát člověk nedohledal – během minuty třeba 100 komentářů, každý z jiné IP adresy, takže blokovat je podle IP nemělo cenu.
Nakonec jsem si všiml, že do jména vždy dávají http://neco.nekde.info a problém zatím vyřešen :-)
Čekám s čím dalším přijdou.
Jinak jsem zkoušel skryté pole s aktualním datumem (třeba 20040707), které se při přidání kontrolovalo s aktuálním datem, ale vždycky po pěti komentářích si nasosli novej formulář a input ztratil cenu.
--
Ach jo, teď jsem si všiml o prosbu diakritiky, jdu to přepsat.
Celkem mi připadá, že veškeré řešení je pouze dočasné. Zatím jsem neviděl řešení, které by se nedalo obejít pokud by o něm tvůrce robota nevěděl.
Většina popisovaných řešení má za následek odstínění robotů co brouzdají bez myšlenky po webu a hledají komentáře. Pokud si dá ale někdo záležet obejde opravdu všechno :(. Osobně používám hidden pole co se jednou za čas mění, filtr na Ip adresy, filtr na klíčová slova a omezení počtu komentářů na IP adresu a čas.
mam rovnaky problem. cms je wordpress.
zatial to riesim zapnutym moderovanim komnentarov, ale aj tak je to dost otravne. nastastie tych spamov je len cca 5 denne.
Nemám žádný problém. CAPTCHA to naprosto spolehlivě řeší :-)
Díky moc všem za komentáře, pokusím se to vzít popořádku…
[4] Zajímavá metoda, díky za ni, ale asi bych do toho šel jen když nepomůže nic jiného.
[6] Tohle se mi líbí o něco míň, stejně jako [9], ale pokud to pomáhá tak nic proti.
[12] Souhlasím, všechna řešení jsou skutečně jen dočasná.
[14] CPATCHA je až na posledním místě v možnostech obrany. Nemám ji rád.
Nyní je bývalá adresa scriptu zasypávána pokusy o vložení komentáře, zajímalo by mě za jak dlouho si toho spameři všimnou.
Zajímavá je i podoba komentářového spamu. U mě je to teď HTML kód o délce tří odstavců. Text je v angličtině a dává smysl. Ty tři odstavce jsou uzavřeny do jednoho tagu H1.
IMHO tady jde o cílený útok na weby založené na WordPressu, vedený v púosledních několika dnech. Mám plnou RSS čtečku identického spamu a všechno z webů s tímto systémem. Někdo si asi všiml, že se toto dá využít…
[16] Zajímavé, zrovna jsem si říkal to samé. Moje RSS čtečka je na tom stejně. Jen to má tu vadu, že já nemám na webu nic z WordPressu :-)
Přimlouvám se za řešení pomocí CAPTCHA. Osobně ji používám na nekolika WP blozích, mám ji nastavenou pouze na 3 písmena, abych příliš nezatěžoval přispěvatele a je od spamu klid. (používám tento CAPTCHA plugin: http://www.boriel.com/?…)
zatim s spechem pouzivam obycejnou otazku „cim se otviraji dvere“ s normalni a nesmyslnou odpovedi.
zadna defaultni odpoved neni zvolena. A prestoze jsem jeste nedopsal rotaci otazek ci meneni nazvu parametru, odfiltrovovalo to prakticky vsechen spam.
Ahojky, tak s tímhle se potýkám delší dobu, zde jsem našel opravdu zajímavé náměty, postupně odzkouším.
Myšlenka: kdybych dal okýnko „jak se jmenuje tento web“ nebo něco podobného, to by asi robot neroštil, žejo?
Víte, proč je čím dál tím více spamu?
Mně se výborně osvědčila metoda „nachytání spam robota“. Položím komentujícímu otázku, zda je robot. Odpověď ne nelze zaškrtnout, odpověď ano lze. Pokud ji někdo zaškrtne (neboť se cítí otázkou (nebo nemožností zaškrtnout ne) zmaten), window.alert() mu situaci vysvětlí a odpověď ano zase odzvolí. Je-li komentář odeslán s odpovědí ano (který spam robot by ve formuláři vynechal nějaké políčko?), pak je s ním po zásluze naloženo.
A je-li tohle políčko pomocí CSS kompletně skryto, ničemu to nevadí, protože nevyžaduje žádnou interakci s uživatelem.
Tenhle postup je založený na v komentářích odkazovaném postupu Jakuba Vrány a při enormním zájmu spam robotů o můj web v posledních 3–4 dnech drží 100% čistý štít. Líbí se mi ale i Derovo řešení. A uvažuju nad rotováním adresy scriptu.
jen takovy detail, v nadpisu chybi pismeno T
Když začly přicházet první spamy zavedl jsem úplně jednoduchoučké blokování na pár (doslova) klíčových slov a teprve nedávno prolezl další spam, takže momentálně omezuji 3 slova a zatím tedy nemám potřebu to nějak zlepšovat ;}
Jinak ale osobně považuji za nejlepší řešení již zmíněné http://php.vrana.cz/…-diskusi.php , které myslím spolehlivě odstíní obecně napsané roboty, přičemž zavedení náhledu příspěvků před odesláním je vlastně aplikací tohoto přístupu.
2 oneless: Nevím jak jinde, ale třeba v případě Intervalu nejde ani tak o promyšlenou a vědomou aplikaci nějakého protispamového opatření, jako spíše o náhodný vedlejší efekt. Původním cílem toho mechanismu je samozřejmě poskytnout autorovi diskusního příspěvku možnost zkontrolovat po sobě, co napsal. Na druhou stranu mi to přijde poněkud užitečnější než nadbytečné formulářové prvky s hláškami „Jsem robot!“ nebo CAPTCHA a jiné obezličky ;-)
Ja som tiež mal plno spamových komentárov ale denne iba okolo 150 a stačil mi na to malý plugin z overovacím kódom a už mi nechodia žiadne spamy. Overovací kód je najlepšie a najjednoduhšie riešenie ako sa zbaviť spamu a viete, že sa Vám neostane do karantény nespamový komentár ako pri niektorých pluginoch.
Tu som o tom písal ja:
http://vano.wms.sk/…-na-blogu-ii
[26] miro, CAPTCHU dnes dokážu chytrejšie roboty prečítať (zvlášť, keď je dobre čitateľná) a zároveň je neprístupná, ak samozrejme nie je vyriešená alternatíva pre nevidiacich (resp. slabozrakých). Doposiaľ najideálnejším riešením sú buď skryté polia, otázky, alebo fígle popísané vyššie.
Bohuzel jsem taktez zasazen spamem a musel sem to resit tim, ze jsem zamezil prispivani neregistrovanym lidem (jedu na WP a PHPBB) (tyka se to predevsim fora) reseni to neni idealni a doufam, ze snad nekdy v budoucnu budu moci od tohoto upustit..
Od téhlé doby zastávám názor, že je CAPTCHA nepřístupná i pro lidi s dobrým zrakem.
http://flickr.com/…ny/66497459/
Na svém blogovacím systému jsem zavedl jednoduchou metodu v podobě žádosti „Napiš do políčka slovo pes: *“. Zatím v poslední době žádný z robotů neprošel.
Bohužel si začali všímat možnosti zasílání vzkazů bloggerům a už se mi párkrát stalo, že robot poslal do vzkazníku bloggerovi spam.
Nasadil jsem možnost, co popisoval Dero a mám pokoj. Ono asi nejlepší je opravdu nějaké řešení založené na klientském skriptu, protože to nadělá robotům nejvíce problémů. Nejspolehlivější ale je na blogu komentáře zrušit úplně ;-)
Metodu, kterou popisují Dero a Jirka Macich ([4],[31]), jsem úspěšně nasadil před čtyřmi dny. Doporučuju.
Popisuju ji na http://suplik.petnik.cz/…qxxq628.html
jedna vec je, ze ofiltrujete obdržané dáta. druhá vec je, že spamersky robot už tie data poslal, čiže zbytočne „zatažil“ server. V istých prípadoch to može mať svoje dôsledky (napr. vyčerpáva dátovy limit hostingu, zdroje servera atď). Poviete si, že je to zbytočné riešiť ale uvedomte si, že spam momentálne prevažuje nad trafficom, ktorý urobia návštevníci (no dobre, nenačítava obrázky, takže nie je to jednoznačné) ale celkom určite po poslaní dát riešia skripty prijímajúce dáta nejaké operácie a ich réžia sa už počíta.
Keď pominieme účinnosť CAPTCHA ale nestotožníme sa s jej otravnosťou (prenášame problém na živého návštevníka), tak vhodným a ešte stále účinným riešením je zapojiť do práce javascript.
Interpreter javascriptu nie je triviálna záležitosť a harvestery vysosávajúce zo stránok FORM, ktorý je „skomplikovaný“ javascriptom môžu byť zmätené.
Pokiaľ akceptujeme javascript, tak musíme si uvedomiť, čo hľadá harvester stránok. Hľadá tag FORM a v prvom rade jeho parameter.
Môžeme javascript použiť na „neviditeľné“ vyplnenie položky nejakého poľa. Harvester teda formulár vidí a teda vie adresu skriptu, ktorému sa dajú posielať dáta. Takže ho zaradí medzi obete a robot posielajúci dáta do toho skriptu teda posielať dáta bude (toto platí aj pre systémy používajúce CAPTCHA či „otázky“).
Benefitom týchto metód teda je odstránenie množstva komentárov „na schválenie“ či na vymazanie.
Pokiaľ však docielime, že harvester neuvidí adresu skriptu, ktorému môže posielať dáta, tak nás logicky nemôže navštíviť žiadny robot s dátami, ktoré by sa pokúšal poslať.
Teda ak zneviditeľníme adresu skriptu, môžeme si pomôcť. Za podmienky, že ako ďalší dôležitý krok urobíme PREMENOVANIE tohto skriptu, pretože Ďalšia veľká skupina robotov na spam proste naslepo skúša posielať dáta na defaultné umiestnenia a názvy skriptov pre prijímanie komentárov. Obmedzenie tohto typu robotov na spam vykonáme ešte tretím krokom a to odstránením všetkých „default“ známok použitia bežného a populárneho CMS (napr. zmienok o jeho názve z hlavičiek šablóny a pod.).
[32] Díky za otestování a za navázání na můj článek :-) Nejspíš budu k implementaci také donucen.
[33] Rony ty si trochu extrémista :-) ale souhlasím s tím, že takto použitý JavaScript je zřejmě to nejmenší zlo a k tomu je to velmi účinné.
[34] možno áno, lenže má to pozitívny vplyv na zdravie – absolútne netreba riešiť a prepierať tú istú tému, čo sa periodicky deje.
Navyše moje riešenie je triviálne v zmysle „zvládne aj začiatočník“.
Jediné, čo bolo naozaj nutné, tak zamyslieť sa ako sa asi vyhľadávajú obete spamu a nájsť najmenej náročné riešenie. Také, ktoré ťa nezamestná nijako významne.
Pretože ak komentárovému spamu venuješ príliš veľa času, tak potom ho vlastne riešiť nemusíš.
Zatím používám filtrování podle několika klíčových slov a podle HTML kódu vkládaného do textu příspěvku (hodně často je tam aspoň HTML odkaz).
Pokud budu někdy přidávat další ochranu, tak to vyřeším stejně jako je to na Intervalu – náhledem odesílaného komentáře.
Mna tu tak napada este jedno – serverove riesenie. Dnes uz takmer kazdy webhosting poskytuje moznost casovania skriptov – cez CRON manazera.
Dal by sa takto napriklad napiat skript, ktory by napr. kazdu hodinu (alebo 6 hodin) premenoval nazvy skriptov, ktore pridavaju komentare. Mohla by sa nasledne vytvorit nejaka premenna, kde by sa ukladal aktualny nazov komentaroveho suboru a ten nazov by sa automaticky vkladal do skriptu s formularom (aby bol aktualny)
Trocha komplikovanejsie a specifickejsie riesenie, ale teoreticky by to mohlo fungovat. Dajme tomu, ze nazov suborov by sa generoval napr. nahodne z aktualneho casu a zakodoval napr. cez sha1. Vznikali by tak zaroven aj jedinecne adresy.
[37] Vzniká ovšem problém, co se stane, pokud někdo bude odesílat normální komentář ve chvíli, kdy budete ten soubor přejmenovávat. A co kešování a podobné záležitosti, kde vzniká časová prodleva? Obávám se, že vaše řešení nepřináší žádné výhody, jen potenciální problémy…
Můžu jen potvrdit funkčnost [4], dokonce jsem se nikde neinspiroval, přišel jsem na to sám :-)))
Původně jsem pomocí JS vyplňovat CAPTCHu, ale protože nebyla složitá, přišli OCR boti a bylo po srandě. S vyplněním otázky „Kolik je 6×9?“ (obě dvě odpovědi jsou správné) si zatím neporadili a většina komentujících nic nevidí, protože mají zapnutý JS.
Kromě toho jsem políčko ochrana proti spamu nastavil na input type=„password“, takže s vypnutým JS stačí uložit číslo do magic wandu a ve FF se vyplní hned, v Opeře se dá komentář odeslat pomocí Ctrl+Enter.
[38] Toto ma samozrejme tiez ihned napadlo. Dalo by sa to riesit, este aj priamo scriptom, ktory by vyvolal zmenu nazvu este pred nacitanim stranky. Dala by sa tam nejaka kontrola, ci nazov suboru bol uz dnes v casovom rozmedzi napr. 6 hodin meneny, ak nie tak zmen, ak ano ponechaj nazov. Samozrejme stale je to viacmenej o tom istom. Bol to len navrh. Zatial kazde spominane riesenie ma mensie alebo vacsie nevyhody (zalezi od uhla pohladu)
[40] keše a podobne veci by to hodne skomplikovali. Premenovat staci aj prilezitostne, nikdy to neuskodi a rovno by som si CMS k tomu prisposobil.
osobne by som sa orientoval naozaj skor na sposoby, ktore zneviditelnia formular v kode tak, aby spamove stroje ho nevideli ale navstevnici ano.
a myslite na to, co napisal v [21] Robert Nemec. Plati to: maju zlu konverziu? Tak neprejdu na iny sposob propagacie ale proste vynasobia produkciu. Rezia je u nich nulova – len riadia farmu pocitacov nestastnikov, ktorych stroje to odosielaju.
V posledních dvaceti dnech mi chodí denně asi 2700 spamů na web. Předtím to bylo pár desítek. Neprojde však žádný, mám kontrolu obsahu – počítám kolik procent v komentáři zabírá odkaz a kolik text. Původně jsem měl nastaveno, že spam je to, kde je 50% a více odkazů, dnes mám přenastveno na 40%. Není na to třeba zádná databáze klíčových slov, jen předpoklad, že spam obsahuje odkazy a těch je více, než textu. Všechno jsem to pochopitelně nejprve testoval na několika tisících komentářích a hledal optimální procentuální nastavení.
Poznámka: V případě, že by za spam byl označen normální komentář uživatele, který by například vložil jen jeden odkaz, nabídne se uživateli krok, kde potvrdí že nejde o spam a komentář se mi odešle na mail k potvrzení. Nepotvrzené jsou samozřejmě skartovány.
Zrovna včera celkem tvrdě napadnuli spamovací roboti jeden IT server s návštěvností cca 150000 stránek denně (v zásadě mě překvapilo, že nepřišli už dříve, protože je opravdu obecně známý a navštěvovaný).
Captchu jsem nechtěl nasazovat – podle mě je to strašně omezující a otravující pro pisatele – a tak jsem zkusil použít metodu analýzy textu doplněné o počítání počtu odkazů, kterou už cca půl roku používám na Přírodě (www.priroda.cz) s návštěvností cca 10–15× menší. Zatím mi to za nějakých 16 hodin chodu zachytilo asi 400 spamů, takže úspěch.
Osobně to obecně vzato pokládám za jediné správné právě takové řešení, které vůbec neomezuje slušné debatující. Což captcha určitě dělá, skryté tlačítka jsou zase omezena podmínkou zapnutého javascriptu nebo podporou CSS a okénka pro kontrolní otázkou zase tím, že ‚obyčejný‘ uživatel vůbec nemusí chápat proč to po něm vlastně chcete. A možnost napsání příspěvku jen po registraci je něco, co podle mého opět jen zdržuje a odrazuje příležitostné pisatele.
Osobně řeším komentářový spam BLACKLISTem s klíčovými výrazy typu Viagra, Cialis apod. Vilém Málek píše naprosto jednoduché a hlavně přístupné řešení spamu v komentářích. Nejen že neomezuje uživatele, ale současně jim ještě poskytuje komfort zkontrolovat si komentář před vložením. Otázkou je, kdy roboti tento mechanizmus prokouknou. Dle mého názoru je to elegantní a neodříznete tak v podstatě žádné uživatele. Plánuji to zabudovat do vlastního redakčního systému. Jinak zajímavé nápady.
Jelikož i mně trápili spam boti, zkuil jsem na ně vyzrát takhle:
http://www.pemo.cz/…ochrana.html
a zatím se zdá, že to funguje velmi dobře.
Nejlépe se mi zatím osvedcil schovaný javascript, který skrytému poli přiřazuje některý unikátní udaj – například dnešní datum. Na serveru se to pak porovná a roboti to neprolezou.
Na root som nasiel toto:
http://www.root.cz/…ntarovy-spam
Jsem laik, ale napadlo mě zda by nešlo měřit časovou prodlevu mezi otevřením, vyplněním a odesláním formuláře. Robot určitě pracuje rychleji než člověk takže by stačilo jen nastavit rozumný limit a vyhodit vše co je příliš rychlé. kdyby se taková ochrana rozšířila, roboty by jí asi prokoukly ale aspoň by to omezilo jejich celkovou efektivitu (kapacitu). Co vy na to?
Já problémy se spammery zatím nemám, ale jsou místa jimi zcela zamořená. Jednomu spammerovi jsem napsal velice nehezký vzkaz. Myslíte, že by se mi mohl i mstít?
[49] Toho bych se nebál. Tento web bombardují spamem lidé, kterým jsem nikdy nenapsal. A naopak ne všichni, kterým jsem napsal nehezký email, zde spamují :-)
Myslel jsem to trošku jinak. Pokud by ten spammer byl zároveň hackerem, mohl by mi teoreticky proniknout až na disk. I když se tvrdí, že tihle spammeři většinou nemají mozek.
Zdravím, webmasteruju jistý web kde mám i jednoduché diskuzní fórum a taky jsem řešil problém se spamem. Protože jsem si všiml, že v obsahu zprávy je hned několik odkazů udělal jsem jednoduchý filtr.
Při odesílání příspěvku se provede kontrola výskytu řetězce „HREF“ a pokud se tam vyskytuje více než jednou je příspěvek označen jako spam. Takto označené příspěvky se vloží do databáze, ale v diskuzi se nezobrazí.
Zkoušel jsem i řešení s opisováním kontrolního kódu, ale několik robotů to dokázalo přečíst.