Verhindern Sie, dass böswillige Bots Spam versenden

15

Ich erinnere mich an eine Seite, die wegen Missbrauch geschlossen wurde, und ich frage mich, ob Bots einen Teil davon haben. Wenn der Bot etwas auf meiner Seite veröffentlicht, wie kann ich es bekämpfen? Ich habe überlegt, einige Cookies zu setzen und die Cookies über JavaScript + Zeitstempel und Signatur ändern zu lassen (daher können die Cookies von gestern heute und in der nächsten Woche nicht verwendet werden).

Ich bin sicher, die meisten Leute / Bots würden einfach eine andere Seite benutzen, anstatt JavaScript in ihrem Bot zu aktivieren.

Was kann ich sonst noch tun? Ich denke an ein tägliches POST-Limit und einen Honeypot für generische Bots, die nur zufällig Spam posten.

John Conde
quelle

Antworten:

13

Sie könnten verschiedene Dinge tun, einschließlich:

  1. Putting ein falsches Feld, das nur Bots sehen werden. Wenn dieses Feld zusammen mit dem Rest des Formulars gesendet wird, können Sie es ignorieren (und gegebenenfalls sperren). Sie können auch fehlerhafte Bots abfangen, die einem versteckten Link folgen .

  2. Verwenden Sie ein CAPTCHA wie reCAPTCHA

  3. Verwenden Sie ein Feld, bei dem der Benutzer eine Frage wie 5 + 3 beantworten muss. Jeder Mensch kann darauf antworten, aber ein Bot weiß nicht, was zu tun ist, da er Felder basierend auf Feldnamen automatisch ausfüllt. Das Feld ist entweder falsch oder fehlt. In diesem Fall wird die Einreichung abgelehnt.

  4. Verwenden Sie ein Token, fügen Sie es in eine Sitzung ein und fügen Sie es dem Formular hinzu. Wenn das Token nicht mit dem Formular übermittelt wird oder nicht übereinstimmt, wird es automatisiert und kann ignoriert werden.

  5. Suchen Sie nach wiederholten Einsendungen von derselben IP-Adresse. Wenn Ihr Formular nicht zu viele Anfragen erhalten sollte, aber plötzlich von einem Bot getroffen wird, sollten Sie in Betracht ziehen, die IP-Adresse vorübergehend zu blockieren.

  6. Verwenden Sie Askimet . Es ist großartig, um Spam zu identifizieren.

John Conde
quelle
5
+1 - Und im Idealfall implementieren Sie eine Kombination der oben aufgeführten Vorschläge auf benutzerfreundliche Weise (wenn ein Benutzer beispielsweise Javascript deaktiviert hat und daher die Javascript-basierte Authentifizierung nicht besteht, stellen Sie dem Benutzer ein CAPTCHA zur Verfügung).
Danlefree
6

John Conde skizziert viele gute Ansätze. Das Problem bei der Auswahl einer Anti-Bot- / Anti-Spam-Technik ist die Ausgewogenheit von Effektivität und Benutzerfreundlichkeit. Es wäre wirklich unpraktisch, jedes Mal ein CAPTCHA ausfüllen zu müssen, wenn Sie einen Kommentar oder eine Nachricht posten möchten. Wenn Sie jedoch nur ein CAPTCHA bei der Anmeldung benötigen, kann dies Spammer manchmal nicht abschrecken.

Einige der passiven Techniken sind eine gute Alternative, da sie keine menschlichen Handlungen erfordern. Das Problem ist, dass Bots immer ausgefeilter werden und wenn Bots CAPTCHAs lösen können, dann können sie sicherlich JS und CSS verarbeiten. Sie müssen also ein wenig Einfallsreichtum zeigen, beispielsweise mit weniger offensichtlichem CSS, um Ihre Bot-Trap-Felder auszublenden.

Aufgrund Ihrer Frage ist Ihnen jedoch wahrscheinlich klar, dass es nicht darum geht, eine bot-sichere Website zu erstellen, sondern nur um eine ausreichende Abschreckung zu schaffen, mit der Bot-Benutzer einfach andere einfachere Ziele auswählen können. Was hier erforderlich ist, ist von Standort zu Standort unterschiedlich und erfordert wahrscheinlich einige Versuche und Fehler. Ich würde zuerst die am wenigsten aufdringlichen Techniken ausprobieren.

Schließlich können Sie Ihre Website auch durch Peer-Moderation von Bot-eingereichten Kommentaren oder manuell eingereichten Spam-Mails reinigen.

Majestätsbeleidigung
quelle
Können Sie die Idee der Peer-Moderation erklären? Gehören dazu normale Benutzer, die Moderatorrechte erhalten, oder wie muss ich mir das vorstellen?
0xC0000022L
@STATUS_ACCESS_DENIED: Entschuldigung für die verspätete Antwort, aber Peer-Moderation ist im Grunde so etwas wie digg, slashdot, stackexchange usw., bei der Benutzer den Inhalt der Site durch positive oder negative Rückmeldungen moderieren können. So können Sie das System so automatisieren, dass es automatisch ausgeblendet oder zur Überprüfung markiert wird, wenn genügend Benutzer ein negatives Feedback zu einem Inhalt geben. Auf Websites wie StackExchange können Benutzer Kommentare / Antworten auch als Spam kennzeichnen, um die Administratoren darauf aufmerksam zu machen. Dies reduziert die Arbeit, die bezahlte Administratoren leisten müssen.
Majestätsbeleidigung
Vielen Dank. Dies würde natürlich nur auf stark frequentierten Websites funktionieren, auf denen sich genügend Benutzer die Mühe machen können, Feedback zu geben;)
0xC0000022L
1

Wie John Conde in seiner 1) und Sie erwähnten, kann Honeypot in den meisten Fällen und auf den meisten Websites sehr gut funktionieren. Wenn es jemals von einem Bot erledigt wird, können Sie auch eine der anderen von John erwähnten Methoden anwenden. Aber ehrlich gesagt, sollte dies der Trick sein, wenn Ihre Website wenig oder durchschnittlich besucht ist.

Beispiel, einer meiner Favoriten:

<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>

Jetzt, wenn das Formular gesendet wird, wird ein extrem hoher Prozentsatz von Bots sowohl "email" als auch "email_address" ausfüllen, aber Menschen werden nur das ausfüllen, was sie sehen, "email" und nicht "email_address". Also müssen Sie in Ihrem `/ process-form'-Code nur überprüfen, ob email_address zur Bestätigung (nicht) leer ist.

Einfach und effektiv.

Anthony Hatzopoulos
quelle