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?

2 KOMENTARZE

  1. 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ń.

  2. :) 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.