Table of contents
W dzisiejszych czasach każda strona pozwalajÄ ca wysyÅaÄ komentarze musi liczyÄ siÄ z atakiem spambotów i jakoÅ siÄ przed nimi zabezpieczyÄ. Spam na WWW ma inne cele i ograniczenia niż spam rozsyÅany przez e-mail i póki co istniejÄ proste i skuteczne sposoby do walki z nim.
\<strong style=\“font\-size:2em;color:red\«\>PomysÅy podane w tym artykule wcieliÅem w życie, dodaÅem kilka bardziej zaawanÂsowaÂnych techÂnik i wszystko to udostÄpÂniÂÅem jako darÂmowy filtr antyÂspamowy\</strong\>.»”
Dlaczego nie CAPTCHA?
Bo koszt spamu ponosi niewinny użytkownik.
- Przeklepywanie liter jest drażniÄ ce i uciÄ Å¼liwe.
- WiÄkszoÅÄ domorosÅych autorów nie ma pojÄcia o technikach OCR i robi obrazki nieczytele dla ludzi, a nie botów (np. niski kontrast, pstrokate kolory i rozstrzelone litery wcale botom nie przeszkadzajÄ ).
- SÄ barierÄ dla osób niewidomych, sÅabo widzÄ cych, a czasem nawet daltonistów.
float:right; margin: 0 0 0.8em 1em title=“OG7c czy 061e?” alt=“OG7c czy 061e?” />
CAPTCHA jest niezbÄdna jako zabezpieczenie przed profesjonalnymi spamerami, którzy mogÄ
“zainwestowaÄ” grube pieniÄ
dze w zaspamowanie specyficznego serwisu (typu Google, Hotmail). JeÅli na zaspamowaniu twojej strony nie da siÄ grubo zarobiÄ, to masz luxus zabezpieczania siÄ przed ogólnymi (gÅupimi, tanimi :) botami.
Dlaczego nie rejestracja?
Znów â fatyga dla użytkownika, a sÄ boty, które potrafiÄ automatycznie rejestrowaÄ siÄ na forach, co wcale nie dziwi, bo wypeÅnienie formularza i otworzenie linku z e-mail to coÅ, co można zrobiÄ nawet prostym skryptem PHP (rozszerzenie imap + curl).
Nie ma nad czym pÅakaÄ, bo dziÄki serwisom takim jak BugMeNot i Mailinator weryfikacja przez e-mail i tak zdewaluowaÅa siÄ.
To co zatem?
float:right; margin: 0 0 0.8em 1em alt="" />
SÄ
dwa popularne typy spambotów â spamujÄ
ce linkami w celu podwyższenia PageRank oraz boty wykorzystujÄ
ce lukÄ w komendzie mail() PHP. Zamiast robiÄ różne voodoo wystarczy przyblokowaÄ dokÅadnie to, co jest niezbÄdne dla spamerów.
Linki
Wszystkie spamowe posty majÄ jednÄ fundamentalnÄ wspólnÄ cechÄ â linki do innych stron.
Rzadko kiedy ktoÅ w komentarzach podrzuca wiÄcej, niż jeden-dwa linki, wiÄc pierwszÄ obronÄ jest odrzucanie postów z duÅ¼Ä iloÅciÄ linków. Wykrycie linków jest banalnie proste: wystarczy zliczyÄ iloÅÄ wystÄ pieÅ “http://” i “https://”.
Posty, które zawierajÄ
dopuszczalnÄ
iloÅÄ linków (1-2?) można kolejkowaÄ do moderacji, sprawdziÄ jeszcze innymi metodami albo po prostu przepuszczaÄ (póki spamerzy nie nauczÄ
siÄ wysyÅaÄ spamowych postów z maÅÄ
iloÅciÄ
linków).
Posty bez linków nie sÄ
w ogóle interesujÄ
ce dla tego typu spamerów.
(na stronach, gdzie dodaÅem takie banalne zabezpieczenie iloÅÄ spamowych postów spadÅa z ok. 40 dziennie do 2-3.)
SÅowa kluczowe
Spamowanie linkami dziaÅa najlepiej, gdy post jest peÅen sÅów kluczowych zwiÄ
zanych z tematem spamu. Na szczÄÅcie te sÅowa kluczowe sÄ
przeznaczone dla bota Google, wiÄc nie mogÄ
byÄ w żaden sposób ukrywane, bo by ich bot nie znalazÅ.
Wystarczy zebraÄ pare postów, żeby zorientowaÄ siÄ jakie tabletki, dewiacje, gry hazardowe i oferty kredytowe sÄ
na topie. Rozpoznanie tych specyficznych sÅów pomaga zdecydowaÄ które posty z linkami sÄ
spamem (samo blokowanie sÅów to przesada, bo przecież ktoÅ mógÅby siÄ chwaliÄ co wyprawiaÅ po wygranej w kasynie ;)
Dziurawy mail()
Komenda mail() w PHP ma idiotycznie zaprojektowane dodawanie wÅasnych nagÅówków, które umożliwia rozsyÅanie spamu z naiwnie napisanych formularzy kontaktowych.
Boty nie wiedzÄ
, który formularz później używa mail(), wiÄc ÅlÄ
exploit gdzie popadnie. Odrzucaj posty pasujÄ
ce do wyrażen regularnych “/Content\-Type\\s*:/i” lub “/Content\-Transfer\-Encoding\\s*:/i” (BTW: w PHP zapomnij o ereg, używaj preg).
Odrzucaj też posty zawierajÄ
ce “\\r\
” w imieniu osoby wysyÅajÄ
cej (nie da siÄ tych znaków wstawiÄ przez <input type=text>, wiÄc można spokojnie zaÅożyÄ, że to bot).
OczywiÅcie jeÅli używasz mail(), to filtruj dane od użytkownika â wycinaj znaki nowej linii (zarówno \\r jak i \
) ze wszystkiego, co wrzucasz do nagÅówków. W przeciwnym wypadku jeÅli masz w kodzie coÅ podobnego:
\ = \“Reply-To: \ <\>\";”
to twój formularz może byÄ wykorzystany do rozsyÅania spamu â bot zamiast imienia albo e-mail dorzuci pare linijek nagÅówków MIME, które wyÅlÄ kopiÄ tego e-maila do innych osób, a nawet pozwolÄ dodaÄ zaÅÄ czniki w HTML.
Inne pomysÅy
Jest ich wiele â polecam podsumowanie technik filtru Sblam!.
Uwagi
Gdy blokujesz posty â pisz dlaczego i nie banuj od razu. Opis przyczyny blokowania na nic nie zda siÄ botom, ale gdyby post czÅowieka przypadkiem wpadÅ w filtr, to dasz możliwoÅÄ ominiÄcia pomyÅki filtru.
Co nie dziaÅa?
SkutecznoÅÄ <a rel=nofollow> jest znikoma. TracÄ na tym autorzy stron, do których użytkownicy naprawdÄ linkujÄ , a takie oznaczenie linków i tak nie odstrasza spambotów â botom nie opÅaca siÄ sprawdzaÄ, czy strona tak oznacza linki, bo to zajmuje tyle samo czasu, co po prostu wysÅanie spamu.
Sprawdzanie HTTP_REFERER jest kompletnie, ale to absolutnie totalnie bez sensu. Botowi banalnie prosto jest spreparowaÄ ten nagÅówek, a z drugiej strony jest on kÅopotliwy dla prawdziwych użytkowników, którzy mogÄ mieÄ go wycinanego lub modyfikowanego przez przeglÄ darkÄ, firewall albo proxy. Podobnie z Cookies, User-Agent i innymi danymi z HTTP.
Ograniczanie iloÅci postów z danego IP. Spam może byÄ sÅany z rozproszonego botnetu, może byÄ sÅany w wiÄkszych odstÄpach czasu przez caÅe dni i noce, a z drugiej strony możesz mieÄ grupy odwiedzajÄ cych z jednego Proxy providera/sieci osiedlowej wieszajÄ cych wszystkich na jednym IP.
Co zawsze dziaÅa?
Moderacja. Nie musi byÄ uciÄ Å¼liwa â filtrami możesz sobie zminimalizowaÄ iloÅÄ rzeczy do moderowania i np. udostÄpniÄ sobie posty jako RSS/Atom, żeby tylko rzucaÄ okiem, czy nie przedostaÅy siÄ jakieÅ spamy.
Wiki Parsing Errors
- Error 1: macro 'naglowki' not found
- Error 2: macro 'imie' not found
- Error 3: macro 'email' not found