2009-08-06 7 views
3

Ich habe ein Webformular, das die Benutzer ausfüllen und die Informationen an den Server senden und in einer Datenbank speichern. Ich bin besorgt, dass Roboter das Formular einfach ausfüllen und ich werde mit einer Datenbank voller nutzloser Aufzeichnungen enden. Wie kann ich verhindern, dass Robots meine Formulare ausfüllen? Ich denke an etwas wie Stackoverflow's Robotererkennung, wo, wenn es dich für einen Roboter hält, es dich fragt, ob du es bist. Gibt es eine serverseitige API in Perl, Java oder PHP?So überprüfen Sie, ob ein Roboter Informationen eingibt

Antwort

10

Es gibt mehrere Lösungen.

  1. Verwenden Sie ein CAPTCHA. SO benutzt reCAPTCHA, soweit ich weiß.

  2. ein zusätzliches Feld zum Formular hinzufügen und versteckt es mit CSS (display: none). Ein normaler Benutzer würde dieses Feld nicht sehen und es daher nicht füllen. Sie prüfen bei der Einreichung, ob dieses Feld leer ist. Wenn nicht, dann handelt es sich um einen Roboter, der alle Formularfelder sorgfältig ausgefüllt hat. Diese Technik wird üblicherweise als "Honigtopf" bezeichnet.

  3. eine JavaScript-Timer-Funktion hinzufügen. Beim Laden der Seite wird ein Wert von Null gestartet und dann im Laufe der Zeit erhöht. Ein normaler Benutzer würde Ihr Formular für einige Zeit lesen und ausfüllen und dann erst abschicken. Ein Roboter würde einfach das Formular ausfüllen und sofort nach Erhalt absenden. Sie prüfen, ob der Wert bei der Einreichung weit von Null entfernt ist. Wenn dies der Fall ist, handelt es sich wahrscheinlich um einen echten Benutzer. Wenn Sie nur ein paar Sekunden sehen (oder gar keinen Wert, weil die Roboter JavaScript nicht ausführen), ist es wahrscheinlich ein Roboter. Dies funktioniert jedoch nur, wenn Sie sich dafür entscheiden, dass Ihre Benutzer JavaScript aktiviert haben müssen, um "Schreib" -Operationen durchführen zu können.

Es gibt andere Techniken sicher. Aber diese sind ziemlich einfach und effektiv.

+0

Ein mögliches Problem mit # 3 ist, dass die meisten Roboter kein Javascript auf der Seite ausführen, daher würde es keinen Wert vom Timer geben. Ich hatte jedoch großen Erfolg mit 1 und 2. – friedo

+0

@riedo: Du hast recht, eigentlich meinte ich genau diese Situation. Kein Wert vom Timer bedeutet, dass es entweder Roboter ist oder der Benutzer JavaScript ausgeschaltet hat. Wenn der Autor entscheidet, dass seine Site JavaScript aktivieren muss, um "Schreib" -Operationen durchzuführen, könnte dieser Ansatz sehr gut funktionieren. –

2

CAPTCHA ist großartig. Die andere Sache, die Sie tun können, wird 99% Ihres Roboterverkehrs verhindern, aber Ihre Benutzer nicht ärgern, Felder zu validieren.

Meine Seite, überprüfe ich für Text in Bereichen wie Postleitzahl und Telefonnummer. Das hat alle nicht gezielten Roboterfehlinformationen entfernt.

4

Ich habe immer bevorzugt Honeypot captcha (article by phil haack), als weniger invasive an den Benutzer.

3

Captchas bringen Probleme Zugänglichkeit und wird letztlich durch die Software Anerkennung besiegt werden.

Ich empfehle das Lesen dieser short article über Bot-Fallen, die versteckte Felder enthalten, wie Matthew Vines und New in der Stadt bereits vorgeschlagen.

Wie dem auch sei, Sie sind immer noch frei, beide captcha und bot Fallen zu verwenden.

0

Sie könnten ein zweistufiges System schaffen, in dem ein Benutzer das Formular ausfüllt, aber dann an eine E-Mail antworten muss der Datensatz innerhalb einer bestimmten Zeitspanne zu „aktivieren“ - sagt 24 Stunden.

Im Back-End können Sie Ihre aktuelle Tabelle mit allen Formularübermittlungen füllen, indem Sie sie in eine temporäre Tabelle einfügen, die automatisch jede Zeile löscht, die älter als Ihre Zeitzuordnung ist.Es sei denn, Sie haben ein ernsthaftes Bot-Problem, dann würde ich denken, dass die Tabelle nicht so groß werden würde, besonders wenn das erste Formular nur aus ein paar Feldern besteht.

Ein Vorteil dieses Ansatzes ist, dass Sie nicht Captcha oder eine andere Technologie wie diese verwenden müssen, die einige Probleme mit der Zugänglichkeit verursachen könnte.

+0

E-Mail-Aktivierung war eine der ersten Lösungen für Bot-Registrierung, aber es ist nicht mehr sehr effektiv. Die schlechte Nachricht ist: Bots können E-Mails lesen. Wenn es einen starken Anreiz gibt, einen Bot für Ihre Website zu schreiben, wird es nicht lange dauern, bis der Bot sich anpasst und dem richtigen Link in Ihrer Aktivierungs-E-Mail folgt. – christopheml

+0

Wow, wusste das nicht. Auch wenn eine E-Mail an eine E-Mail-Box gesendet wird, kann der Bot E-Mails aus dieser Box lesen und den Link in der E-Mail finden und ihm folgen (sogar E-Mails im Nur-Text-Format)? –

Verwandte Themen