Sposobów walki ze spamowymi komentarzami jest wiele. Sam do tej pory stosowałem minimum dwie metody – każdy komentarz podawany jest analizie w Akismet oraz czas dostępności komentarzy jest ograniczony do X dni (komentarze zamknięte, brak możliwości dostania spamu :)), do tego pewnie jest jeszcze kilka innych sposób jak CAPTCHA i inne.
Jednak w ciągu ostatnich kilku dni odkryłem całkowicie nowy i na razie najskuteczniejszy sposób walki ze spamem. Najlepsze to, to, że odkryłem go próbując naprawić problemy z komentarzami u mnie na blogu :) W logach miałem masę wpisów:
A public action method 'Add' was not found on controller 'MovingScrewdriver.Web.Controllers.PostComment.PostCommentController'.
I za nic nie mogłem dojść czy to wy próbujący dodać komentarz, czy nie. Dodałem więc akcję logującą do atrybu AjaxOnly i każda próba wywołania akcji oznaczonej tym atrybutem jest logowana kiedy operacja nie jest ajaxowa. Moim oczom ukazał się piękny widok wszystkich zablokowanych komentarz, które można sprowadzić to poniższego przykładu (url i email wykasowany):
[ { "key":"commenterName", "value":"Jaime" }, { "key":"commenterEmail", "value":"jaime_mcdowell@some-email-ending" }, { "key":"commenterWebsite", "value":"_some_URL_" }, { "key":"commenterComment", "value":"It's hard to come by experienced people for this topic, but you seem like you know what you're talking about!rnThanks" } ]
Jak się okazuje automatyczne toole spamerów wymiękają kiedy do nich trzeba dodać jeszcze AJAX call. No i moja nie chęć do pisania normalnego POST z post back, okazała się wybawieniem :)
Oczywiście nie jest to pozbawione wad, wystarczy mieć wyłączony JS i nie da się już zrobić submit – ale kto w tych czasach nie ma JS włączonego?
Cóż… 90% czasu korzystam z sieci z wyłączonym JS. To jedyne skuteczne zabezpieczenie przed reklamami i trackingiem jakie istnieje. ;-)
Tak swoją drogą: dobrą metodą jest dodanie pola (ukrytego w CSS lub za pomocą JS) typu text, oznaczonego (dla not-JS i/lub not-CSS) tekstem “proszę nie wypełniać” i sprawdzanie przy obsłudze POST, czy rzeczywiście jest puste. Sam stosuję takie pole z nazwą OtherEmail, boty zawsze wpisują tam maila. Jak dotąd (przez miesiąc) 99.5% skuteczności względem braku zabezpieczeń.
:) to ja stosuje blokery, js sie przydaje, zreszta – prawie wszystko co tworze/pisze ma jsa :)
co do pola, to dobry kolejny chwyt, zastanowie sie nad nim :) dzieki!
Comments are closed.