Tomasz Wysocki - dziennik internetowy
Otchłań mojego umysłu…
luty 4, 2007 at 11:13 am
· Filed under Blog, WordPress
Jakiś czas temu Emila na swoim blogu opublikowała notkę, w której narzekała na spam przychodzący na jej bloga. Biorąc pod uwagę, że ja też ostatnio dostaję go masę, postanowiłem coś z tym zrobić.
Kilka dni temu, zacząłem przerabiać swojego bloga oraz logować wszystkie zapytania POST na niego wysyłane. Po analizie danych wysyłanych przez boty postanowiłem wprowadzić dwa zabezpieczenia: zabezpieczenie zrobione specjalnie na boty spamujące wordpressy, oraz zabezpieczenie na “całą resztę”. Okazało się, że skuteczność rozwiązań, które wprowadziłem jest 100% (od kilku dni nie dostałem ani jednego spamu). Dodatkowo są one przezroczyste dla użytkownika i nie używają żadnych filtrów, które mogły by przypadkowo skasować “dobry” komentarz.
Zabezpieczenie na boty Wordpressowe
Okazało się, że większość botów wysyłających spam tylko na blogi “napędzane” skryptem Wordpress jest dość głupia. Wchodzą one na stronę komentarzy i wysyłają standardowe zapytanie POST dla wordpressa, nie patrząc nawet w jaki sposób formularz jest zbudowany. Dlatego aby pozbyć się tego robactwa wystarczyło zmienić nazwy pól w formularzu. Tym samym zapytanie POST wysyłane przez boty stało się niepoprawne i można je łatwo wyfiltrować.
Zabezpieczenie przeciwko “całej reszcie”
Całą resztę też dosyć łatwo oszukać. Ja zrobiłem to w następujący sposób: skopiowałem pole, w którym wpisuje się treść komentarza. Dałem mu atrybut display: none i opis (dla przeglądarek tekstowych): to pole pozostaw puste. W oryginalnym polu zmieniłem nazwę na “spam”. Jak to działa?
Większość botów wypełni wszystkie pola, łącznie z tym którego zwykły użytkownik nie wypełni, bo albo go nie zobaczy, albo przeczyta opis “tego nie wypełniaj”. Wszystkie te boty można z łatwością wyfiltrować. Co bardziej cwane boty mogą “nauczyć” się takie zabezpieczenie omijać. To właśnie dlatego pole, w którym trzeba wpisać treść komentarza ma prowokacyjną nazwę “spam”. Jeśli bot będzie miał jakieś pole ominąć, to być może ominie właśnie te i czeka go “muka”.
Życzę powodzenia w zabezpieczaniu własnych blogów. Możecie oczywiście zastosować filtry. Ja je jednak niezbyt lubię.
Permalink
Soltys wrote @ luty 4th, 2007 at 7:10 pm
Nie lepszy jest token?
lub zabezpiczenie jak na blogu Pio ” x + y =’ i tu podajesz wynik?
Jeszcze jest jeden pomysł że tworzysz dwa ratio buttony jeden z napisem ’spam” a drugi “Człowiek” oczywiście domyśnie ustawione na Spam
Jest jeszcze wtyczka do wordpressa Akismet, dosyć dobry.
Pozdrawiam
Lepszy? Wszystkie sposoby, które podałeś wymagają tego, aby użytkownik poświęcił swój cenny czas lub widząc obostrzenia zrezygnował z dodania komentarza. Ten, który ja zastosowałem, jest przezroczysty dla wszystkich użytkowników, którzy mają przeglądarkę obsługującą CSS (czyli patrząc w statystyki praktycznie wszystkich), Nie sądzisz, że to lepsze rozwiązanie?
Akismet jest za to filtrem i jak wszystkie filtry ma pewien margines błędów. Poza tym nie lubię filtrów decydujących za mnie czy warto coś przeczytać czy nie.
eleeka wrote @ luty 6th, 2007 at 1:05 am
Sprytne i proste. Podoba mi się. Będę ciągnąć.
Przyda się przyda.
Priest wrote @ luty 8th, 2007 at 11:07 pm
Dobry pomysł.
Zrobiłem to u siebie, zobaczymy czy działa :)
Priest wrote @ luty 23rd, 2007 at 8:53 pm
Działa, od kiedy wrzuciłem to do siebie nie dostałem jeszcze spamu :)
3lll wrote @ maj 17th, 2007 at 2:04 pm
No, ja już widziałem boty potrafiące to obejść. Jak na razie sblam (polski akismet) to ostatnia deska ratunku.
Biorąc pod uwagę, że od ponad trzech miesięcy nie dostałem ANI JEDNEGO spamu, opowieści o botach obchodzących to zabezpieczenie mnie nie przerażają. A filtry jak to filtry - zawodne.
nonim wrote @ maj 20th, 2007 at 3:25 pm
szczerze? wszystko jest proste do obejścia, w momencie gdyby komuś się chciało pisać spersonalizowane skrypty spamujące, tylko pytanie po co? jeżeli hastruje dziennie kilkadziesiąt tys wpisów na wordpressowym skrypcie i to że nie dodam wpisu (spamu) na 30% z nich jakoś nie robi mi różnicy bo i tak jest multum, które albo maja słabe zabezpieczenia, albo nie mają żadnych :)
pozdrawiam
No i właśnie na tym opiera się skuteczność tego zabezpieczenia.
MySZ wrote @ luty 12th, 2008 at 1:05 am
Ja u siebie stosuje kilka poziomów zabezpieczeń:
1. Plik .htaccess z sblam! - wycina dobre 70-80% ruchu spamowego (czyli w ogóle nie napędza transferu!).
2. Bad Behavior - w tej chwili nie jest wycinane jakieś 0,0001%
3. Administracja -> Dyskusja -> Autor komentarza musi posiadać co najmniej jeden zaakceptowany wcześniej komentarz
4. Akismet.
Od czasu do czasu mam jakiś komentarz do zaakceptowania, a od czasu do czasu muszę z Akismeta wywalić coś co się przedarło (jeden komentarz/trackback na kilka tygodni). Spamu na blogu pokazuje się 0 sztuk :) Bez wyłączonych zabezpieczeń mam jakieś 200-300 tygodniowo :)
Zalety: .htaccess z sblam wycina mi zbędny ruch z serwera, ja nie mam spamu (co ważne - popularnego spamu z trackbacków, których opisane przez Ciebie sposoby nie wyeliminują), a ludzie mogą pisać swobodnie, bez beznadziejnych “kapci” czy innych pseudozabezpieczeń :)
Paweł wrote @ luty 12th, 2008 at 6:02 pm
“Całą resztę też dosyć łatwo oszukać. Ja zrobiłem to w następujący sposób: skopiowałem pole, w którym wpisuje się treść komentarza. Dałem mu atrybut display: none i opis (dla przeglądarek tekstowych): to pole pozostaw puste. W oryginalnym polu zmieniłem nazwę na “spam”. Jak to działa?”
–
Ja zastosowałem coś o podobnej idei: dodałem pole (display:none) do którego wstawiany jest tytuł wpisu z bloga. W formularzu z komentarzem jest też pole, do którego użytkownik ma skopiować tytuł wpisu z bloga. Komentarz zostaje dodany jeżeli treść obu pól jest taka sama.
Działa bez zarzutu
Arkady_pl wrote @ marzec 19th, 2008 at 5:04 pm
Pomysł genialny w swej prostocie :)
Ja bym tylko dodał jeszcze jedno utrudnienie, mianowicie na serwerze jest takie cudo jak sesja. Wystarczy aby na poczatku kreowania sesji wylosować np. 10 znakowy string, ktory uzywamy do utworzenia nazwy pola z komentarzem.
Jaki skutek?
Pole zawsze nazywa się inaczej w każdej sesji.
Robot się nie kapnie.
Mało tego, stosując jeszcze inne sztuczki z losowaniem, możemy mu utrudnić życie losując takich pól 5 a używac tylko jednego(ktoregos).
Istna ruletka, nad którą my panujemy.
Pozdrawiam.
@Arkady_pl:
Pewnie, że można. Można też wymyślić dużo ciekawsze zabezpieczenia, opierające się np. na JavaScript. Moim jednak zdaniem, dopóki spamboty nie nauczą się omijać tego zabezpieczenia (a prędko to nie nastąpi, ponieważ można je stosować w tylu wariacjach, że bot mający je omijać musiał by analizować zbyt wiele danych, przez co stał by się zbyt mało wydajny, a nie ma to sensu, skoro w internecie jest ogromna ilość w ogóle nie zabezpieczonych formularzy), nie ma sensu wprowadzać zabezpieczeń bardziej skomplikowanych.
Poza tym to zabezpieczenie ma jedną wielką zaletę: niezależnie od przeglądarki i ustawień użytkownika, będzie on mógł dodać komentarz.
HTML-Tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>