Zapobiegaj wysyłaniu spamu przez złośliwe roboty

15

Pamiętam stronę zamkniętą z powodu niewłaściwego użytkowania i zastanawiam się, czy boty mają tę część. Jeśli bot publikuje coś na mojej stronie, w jaki sposób mogę z tym walczyć? Myślałem o ustawieniu niektórych plików cookie i zmianie plików cookie za pomocą JavaScript + sygnatury czasowej i znaku (więc wczorajszych plików cookie nie można używać dzisiaj ani w przyszłym tygodniu).

Jestem pewien, że większość ludzi / botów po prostu użyłaby innej strony zamiast włączać JavaScript w swoim bocie.

Co jeszcze mogę zrobić? Myślę o codziennym limicie POST i honeypocie dla ogólnych botów, które po prostu losowo wysyłają spam.

John Conde
źródło

Odpowiedzi:

13

Możesz zrobić kilka rzeczy, w tym:

  1. Umieszczenie fałszywego pola, które będą widoczne tylko boty. Następnie, jeśli to pole zostanie przesłane wraz z resztą formularza, możesz je zignorować (i zablokować je w razie potrzeby). Możesz również złapać złych botów, którzy podążają za ukrytym linkiem .

  2. Użyj CAPTCHA jak reCAPTCHA

  3. Użyj pola, które wymaga od użytkownika odpowiedzi na pytanie takie jak 5 + 3. Każdy człowiek może na nie odpowiedzieć, ale bot nie będzie wiedział, co zrobić, ponieważ jest to pole automatycznie wypełniane na podstawie nazw pól. W związku z tym pole to będzie niepoprawne lub będzie brakowało, w którym to przypadku zgłoszenie zostanie odrzucone.

  4. Użyj tokena i umieść go w sesji, a także dodaj go do formularza. Jeśli token nie zostanie przesłany z formularzem lub nie pasuje, jest zautomatyzowany i można go zignorować.

  5. Poszukaj powtarzających się zgłoszeń z tego samego adresu IP. Jeśli twój formularz nie powinien otrzymać zbyt wielu żądań, ale nagle jest prawdopodobne, że został trafiony przez bota i powinieneś rozważyć tymczasowe zablokowanie adresu IP.

  6. Użyj Askimet . Doskonale identyfikuje spam.

John Conde
źródło
5
+1 - I idealnie, zaimplementujesz kombinację powyższych sugestii w sposób przyjazny dla użytkownika (na przykład, jeśli użytkownik ma wyłączoną obsługę Javascript i dlatego nie powiedzie się uwierzytelnianie oparte na Javascript, przekaż użytkownikowi CAPTCHA)
danlefree,
6

John Conde przedstawia wiele dobrych podejść. Problem z wyborem techniki anty-bot / antyspamowej polega na równoważeniu skuteczności i wygody. Byłoby naprawdę niewygodne wypełnianie CAPTCHA za każdym razem, gdy chcesz opublikować komentarz lub wiadomość, ale jeśli potrzebujesz tylko CAPTCHA podczas rejestracji, to czasami nie powstrzymuje to spamerów.

Niektóre techniki pasywne są dobrą alternatywą, ponieważ nie wymagają żadnego działania człowieka. Problem polega na tym, że boty stają się coraz bardziej wyrafinowane, a jeśli boty potrafią rozwiązać CAPTCHA, to z pewnością mogą przetwarzać JS i CSS. Musisz więc ćwiczyć odrobinę pomysłowości, na przykład używać mniej oczywistego CSS, aby ukryć swoje pola pułapek.

Ale w oparciu o twoje pytanie, myślę, że prawdopodobnie zdajesz sobie sprawę, że nie chodzi o to, aby stworzyć witrynę odporną na boty, ale po prostu stworzyć wystarczająco odstraszający element, aby użytkownicy botów wybrali inne łatwiejsze cele. To, co jest tutaj wymagane, będzie się różnić w zależności od witryny i prawdopodobnie będzie wymagać testów i błędów. Najpierw spróbuję najmniej natrętnych technik.

Wreszcie, innym sposobem na usunięcie spamu z witryny jest użycie moderacji równorzędnej w celu usunięcia komentarzy przesłanych przez bota lub ręcznie przesłanego spamu.

Lèse majesté
źródło
czy możesz wyjaśnić ideę moderacji rówieśniczej? Czy to oznacza, że ​​normalni użytkownicy uzyskują prawa moderatora lub jak mam to sobie wyobrazić?
0xC0000022L,
@STATUS_ACCESS_DENIED: przepraszam za spóźnioną odpowiedź, ale moderacja rówieśnicza to w zasadzie coś takiego jak digg, slashdot, stackexchange itp., W których użytkownicy mogą moderować zawartość witryny, podając jakąś formę pozytywnej lub negatywnej opinii. Dzięki temu możesz zautomatyzować system w taki sposób, że gdy wystarczająca liczba użytkowników wyrazi negatywną opinię na temat treści, zostanie ona automatycznie ukryta lub oznaczona do sprawdzenia. W witrynach takich jak StackExchange użytkownicy mogą również oznaczać komentarze / odpowiedzi jako spam, zwracając uwagę administratorów. Zmniejsza to pracę, którą muszą wykonywać płatni administratorzy.
Lèse majesté
dzięki. To oczywiście działałoby tylko w witrynach o dużym natężeniu ruchu, na których wystarczająca liczba użytkowników może niepokoić się o opinie;)
0xC0000022L
1

Jak wspomniał John Conde w swoim # 1) i wspomniałeś, honeypot może działać bardzo dobrze w większości przypadków i większości stron internetowych. Jeśli kiedykolwiek zrobi to bot, możesz po prostu zastosować jedną z innych metod, o których wspomniał John. Ale szczerze mówiąc, jeśli Twoja witryna ma niski lub średni ruch, to powinno wystarczyć.

Przykład, jeden z moich ulubionych:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Teraz, gdy formularz zostanie przesłany, niezwykle wysoki odsetek botów wypełni zarówno „email”, jak i „adres_e-mail”, ale ludzie wypełnią tylko ten, który widzą, „e-mail”, a nie „adres_e-mail”. Zatem w kodzie `/ process-form 'musisz tylko sprawdzić, czy adres e-mail jest (nie) pusty do weryfikacji.

Prosty i skuteczny.

Anthony Hatzopoulos
źródło