Spamové komentáře v BlogEngine.NET

Ačkoliv má BlogEngine.NET v sobě zabudovaný skrytý CAPTCHA kód, který celkem úspěšně zabraňuje strojově přidávaným komentářům, vyskytuje se v poslední době další fenomén – lovci SEO zadávají ručně komentáře na dle jejich názoru navštěvované servery, aby si zvýšili svůj pagerank v Googlu, Binqu atd.

Na česky psaném blogu vždy takový komentář vypadá jako pěst na oko, takže to ani moc nezkoušeli. V průběhu posledních dvou týdnů se však situace změnila a těch komentářů – spamů rapidně narostlo. Nechci nastavovat moderování = schvalování komentáře před jeho zveřejněním, proto jsem si nastavil pouze e-mailové anotace, že byl přidán komentář, nicméně si říkám, proč bych měl těmhle podivným existencím tolerovat zneužívání technologií k jejich prospěchu. Začal jsem tedy hledat, co se děje. Pokud by někdo měl blog postavený na BE.NET 1.4 či 1.5, příjde mu třeba tento článek vhod.

Základní problém je v tom, že se objevil nástroj, jenž dokáže obcházet současné ochrany BE.NET a umožňuje strojové vkládání komentářů – stránka toho ksindlu je zde. Jak dokazuje diskuze na fóru, ten nástroj bohužel vskutku funguje a dělá všem majitelům blogů vrásky na čele, neboť se tváří jako korektně zadávaný komentář jakoby přes prohlížeč. Zajímavý článek o tom, jak vkládání komentářů funguje je na http://www.dscoduc.com/post/2009/07/10/BecPoster-Automated-Spam-Tool.aspx.

Jak s takovými komentáři bojovat?

1) zakázat komentáře – hodně razantní, teroristům se přeci neustupuje
2) moderovat komentáře – manuální práce, časově náročné, nepříliš user-friendly, autor komentáře jej sice hned uvidí, ale ostatní nikoliv
3) nasadit URL/e-mail Comment Filter v podobě BE.NET extenze – nepříliš efektivní, opět náročné na čas, pokud se ten program na vkládání komentářů ujme a začne jej používat víc lidí, je to neudržitelné
4) nasadit extenzi Commentor a propojit ji s antispamovými službami Waegis či Akismet, které mají obě i bezplatné varianty pro domácí použití – dle ohlasů to bylo docela funkční, v posledním týdnu to ale také selhává. V mém případě by to pravděpodobně odbouralo různé “Busby SEO test”, ale na druhou stranu se obávám funkčnosti těchto antispamových služeb v případě českého textu. Možná to v budoucnu vyzkouším.
5) jednoduché a alespoň dočasně stoprocentně účinné řešení je v přejmenování odesílacího tlačítka na nějaký vlastní název. Tohle bude samozřejmě fungovat jen do té doby, než autor programu na vkládání komentářů nerozpozná tuto fintu a nevyrobí inteligentní rozpoznávání názvu odesílacího tlačítka :(
6) nasadit quick-fix autorů BE.NET, který se objevil ještě včera, tj. v pátek 17.7., v repository zdrojového kódu BE.NET – je to changeset 28194.
7) počkat na robustnější řešení antispam opatření, které autoři BE.NET slibují v nejbližších dnech

Jelikož jsem doposud neměl čas provést upgrade BE.NET z verze 1.4 na 1.5, rozhodl jsem se pro rekompilaci kódu s úpravou popsanou v bodě 5. V podstatě jde jen o nahrazení dvou výskytů textu “btnSaveAjax” v každém z těchto souborů:
User controls\CommentView.ascx
blog.js

Uvidím v nejbližších dnech, jak to zabere. Spammerům a těm programům by to šlo možná krapet ztížit třeba použitím české diakritiky v názvu toho odesílacího tlačítka. Zběžně jsem prošel i řešení 6, neměl by být problém ty čtyři řádky kódu použít i ve verzi 1.4. Všechno zlé je pro něco dobré, třeba mne spamy donutí konečně upgradovat na verzi 1.5 a ta třeba již bude obsahovat úpravy z bodu 7.

Zobrazit komentáře