Frage

Ich habe ein Webformular, das die Benutzer ausfüllen und die Informationen an Server senden und in einer Datenbank gespeichert werden. Ich mache mir Sorgen, dass Roboter möglicherweise das Formular ausfüllen und ich werde eine Datenbank voller nutzloser Datensätze haben. Wie kann ich verhindern, dass Roboter meine Formulare ausfüllen? Ich denke, vielleicht so etwas wie Stackoverflows Robotererkennung, wo Sie, wenn es glaubt, ein Roboter zu sein, Sie auffordert, zu überprüfen, ob Sie es nicht sind. Gibt es eine serverseitige API in Perl, Java oder PHP?

War es hilfreich?

Lösung

Es gibt mehrere Lösungen.

  1. Verwenden Sie eine Captcha. So verwendet reCaptcha Soweit ich weiss.

  2. Fügen Sie Ihrem Formular ein zusätzliches Feld hinzu und verbergen Sie es mit CSS (Anzeige: Keine). Ein normaler Benutzer würde dieses Feld nicht sehen und füllt es daher nicht. Sie überprüfen bei der Einreichung, wenn dieses Feld leer ist. Wenn nicht, dann haben Sie es mit einem Roboter zu tun, der alle Formularfelder sorgfältig ausgefüllt hat. Diese Technik wird normalerweise als "Honeypot" bezeichnet.

  3. Fügen Sie eine JavaScript -Timer -Funktion hinzu. Auf der Seite laden Sie einen Wert bei Null und erhöht ihn dann im Laufe der Zeit. Ein normaler Benutzer las und füllte Ihr Formular für einige Zeit aus und reicht es erst dann ein. Ein Roboter würde das Formular sofort ausfüllen und einreichen, nachdem er es erhalten hatte. Sie überprüfen, ob der Wert bei der Einreichung viel von Null verlaufen ist. Wenn dies der Fall ist, ist es wahrscheinlich ein echter Benutzer. Wenn Sie nur ein paar Sekunden sehen (oder gar keinen Wert aufgrund der Roboter, die JavaScript nicht ausführen), ist es wahrscheinlich ein Roboter. Dies funktioniert jedoch nur, wenn Sie entscheiden, dass Ihre Benutzer JavaScript haben, um "Schreibvorgänge" auszuführen.

Es gibt mit Sicherheit andere Techniken. Aber diese sind recht einfach und effektiv.

Andere Tipps

Sie können verwenden reCaptcha (gleich wie Stackoverflow) - sie haben Bibliotheken für eine Reihe von Programmiersprachen.

Ich habe Honeypot Captcha immer bevorzugt (Artikel von Phil Haack), wie es für den Benutzer weniger invasiv ist.

Captchas bringen Zugänglichkeitsprobleme mit und werden letztendlich durch Softwareerkennung besiegt.

Ich empfehle das Lesen davon Kurzer Artikel Über Bot -Fallen, zu denen versteckte Felder gehören, wie Matthew Vines und New in der Stadt bereits vorgeschlagen.

Wie auch immer, Sie können immer noch frei von Captcha- und Bot -Fallen verwenden.

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

Auf meiner Website überprüfe ich in Feldern wie Postleitzahl und Telefonnummer nach Text. Das hat alle nicht zielgerichteten Roboterfehlinformationen beseitigt.

Sie können ein zweistufiges System erstellen, in dem ein Benutzer das Formular ausfüllt, dann jedoch auf eine E-Mail antworten muss, um den Datensatz innerhalb eines festgelegten Zeitraums zu "aktivieren"-z. B. 24 Stunden.

Anstatt Ihre aktuelle Tabelle mit allen Formulareinführungen zu bevölkern, können Sie sie in eine temporäre Tabelle einfügen, die automatisch jede Zeile löscht, die älter als Ihre Zeitzuteilung ist. Wenn Sie kein ernstes Bot -Problem haben, würde ich denken, dass der Tisch nicht so groß wird, insbesondere wenn die erste Form nur ein paar Felder ist.

Ein Benifit dieses Ansatzes ist, dass Sie keine Captcha oder eine andere Technologie wie diese verwenden müssen, die möglicherweise einige Zugänglichkeitsprobleme verursachen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top