it-swarm.com.de

Bessere Honeypot-Implementierung (Formular Anti-Spam)

Wie können wir diese Spambots auf unserer Website loswerden?

Jeder Standort wird irgendwann Opfer von Spambots . Wie Sie damit umgehen, kann sich auf Ihre Kunden auswirken, und die meisten Lösungen können einige Leute davon abhalten, Ihre Formulare auszufüllen.

Hier kommt die Honeypot-Technik ins Spiel. Mit ihr können Sie Spambots ignorieren, ohne dass die Benutzer ein Captcha ausfüllen müssen oder durch andere Reifen springen, um Ihr Formular auszufüllen.

Dieser Beitrag soll anderen helfen, eine Honeypot-Falle in ihren Website-Formularen zu implementieren.


Aktualisieren:

Seit der Implementierung des folgenden Honeypots auf allen Websites meines Kunden haben wir 99,5% (Tausende von Eingaben) aller Spam-Mails erfolgreich blockiert. Das heißt, ohne die Techniken anzuwenden, die im Abschnitt "Erweitert" erwähnt werden, die in Kürze implementiert werden.

39

Pojęcie

Dodając niewidzialne pole do formularzy, które mogą zobaczyć tylko spamboty, możesz nakłonić ich do ujawnienia, że ​​są spambotami, a nie rzeczywistymi użytkownikami końcowymi.

HTML

<input type="checkbox" name="contact_me_by_fax_only" value="1" style="display:none !important" tabindex="-1" autocomplete="off">

Tutaj mamy proste pole wyboru, które:

  • Jest ukryty z CSS.
  • Ma niejasne, ale oczywiście fałszywe imię.
  • Ma domyślną wartość równoważną 0.
  • Nie można wypełnić autouzupełnianiem
  • Nie można przejść do za pośrednictwemTabklawisz. (Patrz tabindex )

Po stronie serwera

Po stronie serwera chcemy sprawdzić, czy wartość istnieje i ma wartość inną niż 0, a jeśli tak, to odpowiednio ją obsłużyć. Obejmuje to rejestrowanie próby i wszystkich przesłanych pól.

W PHP może wyglądać mniej więcej tak:

$honeypot = FALSE;
if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) {
    $honeypot = TRUE;
    log_spambot($_REQUEST);
    # treat as spambot
} else {
    # process as normal
}

Zurückfallen

W tym miejscu pojawia się dziennik. W przypadku, gdy któryś z użytkowników zostanie oznaczony jako spam, dziennik pomoże Ci odzyskać utracone informacje. Es wird ein Bad oder eine Badewanne in zwei Richtungen, je nach Verfügbarkeit und Verfügbarkeit der Unterkunft in zwei Richtungen angeboten.

Raportowanie

Wiele usług umożliwia zgłaszanie znanych adresów IP spambota za pośrednictwem interfejsu API lub przesyłanie listy. (Takich jak CloudFlare ) Pomóż uczynić Internet bezpieczniejszym miejscem, zgłaszając wszystkie znalezione adresy IP spamu i spamu.

Zaawansowane

Jeśli naprawdę musisz rozprawić się z bardziej zaawansowanym spambotem, możesz zrobić kilka dodatkowych rzeczy:

  • Ukryj pole honeypot wyłącznie za pomocą JS zamiast zwykłego CSS
  • Użyj realistycznych nazw formularzy, których nie używasz. (np. „telefon” lub „strona internetowa”)
  • Dołącz walidację formularza w algorytmie honeypota. (większość użytkowników końcowych otrzyma tylko 1 lub 2 pola błędne; spamboty będą zazwyczaj mylą większość pól)
  • CloudFlare, która automatycznie blokuje znane adresy IP spamu
  • Mają limity czasu i uniemożliwiają natychmiastowe wysyłanie wiadomości. (formularze przesyłane w ciągu 3 sekund od wczytania strony są zazwyczaj spamem)
  • Zapobiegaj publikowaniu adresów IP więcej niż raz na sekundę.
  • Więcej pomysłów znajdziesz tutaj: Jak utworzyć „Nuklearny” Honigtopf do przechwytywania spamerów
87

Ein Vorschlag, um die Nicht-Autovervollständigung wirklich zu erzwingen:
autocomplete="off" um autocomplete="nope" OR autocomplete="false" ändern 

Da der angegebene Wert nicht gültig ist (die Werte für autocomplete sind nur on oder off), stoppt der Browser den Versuch, das Feld auszufüllen. 

Weitere Informationen finden Sie unter So deaktivieren Sie die automatische Autovervollständigung von Formularen

Hoffe das hilft.

SYA :)

9
LebCit

Wir fanden heraus, dass eine leichte (wenn auch einfache) Variation der Vorschläge hier einen großen Unterschied in der Effektivität unseres Kontaktformular-Honeypot machte. Kurz gesagt, ändern Sie das verborgene Feld in eine Texteingabe und lassen Sie den Bot denken, es sei ein Passwort. Etwas wie das:

<input type="text" name="a_password" style="display:none !important" tabindex="-1" autocomplete="off">

Sie werden feststellen, dass diese Mock-Passwort-Eingabe dieselben grundlegenden Richtlinien wie das Kontrollkästchenbeispiel einhält. Und ja, eine Texteingabe (im Gegensatz zu einer tatsächlichen Passworteingabe) scheint gut zu funktionieren.

Diese anscheinend geringfügige Änderung führte für uns zu einem drastischen Spam-Rückgang.

1
yodarunamok