Wie kann verhindert werden, dass Roboter ein Formular automatisch ausfüllen?

Lesezeit: 12 Minuten

Benutzeravatar von Gal
Gal

Ich versuche, einen ausreichend guten Anti-Spam-Mechanismus zu finden, um automatisch generierte Eingaben zu verhindern. Ich habe gelesen, dass Techniken wie Captcha, 1+1=? Dinge funktionieren gut, aber sie stellen auch einen zusätzlichen Schritt dar, der die kostenlose schnelle Nutzung der Anwendung behindert (ich suche bitte nicht nach so etwas).

Ich habe versucht, einige versteckte Felder in allen meinen Formularen festzulegen, mit display: none;
Ich bin mir jedoch sicher, dass ein Skript so konfiguriert werden kann, dass es diese Formularfeld-ID verfolgt und einfach nicht ausfüllt.

Implementieren/kennen Sie eine gute Anti-Automatik-Formular-Ausfüll-Roboter-Methode? Gibt es etwas, das nahtlos mit HTML UND/ODER serverseitiger Verarbeitung ausgeführt werden kann und (fast) kugelsicher ist? (ohne JS, da man es einfach deaktivieren könnte).

Ich versuche, mich dabei nicht auf Sitzungen zu verlassen (dh zu zählen, wie oft auf eine Schaltfläche geklickt wird, um Überlastungen zu vermeiden).

  • Danke, dass Sie keine Captcha-Lösungen wollen! Meiner Meinung nach ist Formular-Spam ein Problem für Website-Besitzer, und es zu verhindern, ist keine Belastung, die der Benutzer tragen sollte. Wie die Antworten hier belegen, gibt es viel zu viele alternative Wege, wie wir Spam auf der Seite angehen können. Methoden, die eine Benutzerinteraktion erfordern, sollten nur von Faulen oder Anfängern verwendet werden.

    – Mike

    11. März 2015 um 18:02 Uhr

  • Es gibt ein alternatives CAPTCHA, das nur bei Verdacht ausgelöst wird, das normalen Benutzern das Absenden ermöglicht, aber Spam stoppt.

    – Abhishek Choudhary

    17. September 2021 um 15:58 Uhr

  • Markiert und positiv bewertet, insb. wegen dem, was Mike gesagt hat. Barrierefreiheit und die WCAG (Richtlinien für barrierefreie Webinhalte) sind ein weiterer Grund, CAPTCHA zu vermeiden – selbst wenn es einen Audio-Workaround gibt, der nur einigen Menschen mit Behinderungen hilft.

    – WHO ist NoToOldRx4CovidIsMurder

    12. November 2021 um 1:27 Uhr

Ich finde tatsächlich, dass ein einfaches Honey Pot-Feld gut funktioniert. Die meisten Bots füllen aus jeder Formularfeld, das sie sehen, in der Hoffnung, die erforderlichen Feldvalidatoren zu umgehen.

http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

Wenn Sie ein Textfeld erstellen, blenden Sie es in Javascript aus und überprüfen Sie dann, ob der Wert lautet leer Auf dem Server werden dadurch 99 % der Roboter da draußen ausgesondert und 99 % Ihrer Benutzer nicht verursacht irgendein Frust überhaupt. Die verbleibenden 1 %, bei denen Javascript deaktiviert ist, sehen das Textfeld weiterhin, aber Sie können für solche Fälle eine Nachricht wie “Dieses Feld leer lassen” hinzufügen (wenn Sie sich überhaupt darum kümmern).

(Beachten Sie auch, dass es für einen Roboter viel zu einfach ist, das einfach zu sehen und das Feld zu verwerfen, wenn Sie style=”display:none” auf dem Feld eingeben, weshalb ich den Javascript-Ansatz bevorzuge).

  • Glaubst du, Bots gehen tatsächlich die CSS-Datei durch und stellen fest, dass sie display:none; ? Ich verwende wirklich lieber keine JS-basierte Lösung, da sie leicht deaktiviert werden kann.

    – Gal

    5. März 2010 um 18:15 Uhr

  • Es scheint eine alte Lösung für Webmaster zu sein, die Tonnen von nicht relevanten Schlüsselwörtern enthält, um ihr Webranking zu verbessern. Ich denke, Such-Crawler-Bots wie Google können herausfinden, dass es sich um display:none handelt. Warum sollten andere Bots das nicht können?

    – Schneeflocke

    8. März 2010 um 10:34 Uhr

  • Ich habe diese Technik jetzt auf zwei Websites angewendet, die gehämmert wurden, und Bot-Anmeldungen sind jetzt auf beiden Null 0. Gegen gezielte Angriffe hilft das nicht, aber die meisten suchen ohnehin nur nach Exploits oder spammen.

    – Nirvdrum

    8. September 2011 um 20:13 Uhr

  • Kleiner Punkt hier: Um das JS-Problem zu umgehen, verwenden Sie einfach CSS, um Ihre Honeypot-Eingabe zu positionieren Oben Seitenanfang – auf diese Weise ist es in Ordnung, js deaktiviert zu haben, und um dies zu umgehen, muss der Bot in der Lage sein, die absolute CSS-Positionierung zu analysieren und eine vernünftige Entscheidung darüber zu treffen, ob es sich um einen Honeypot handelt oder nicht. ein bisschen kugelsicherer auf diese Weise 🙂

    – totalNotLizards

    26. Oktober 2011 um 13:43 Uhr


  • @alexy13 Ja, es ist einfacher, aber wie in der Antwort erwähnt, ist es für einen Bot auch viel einfacher herauszufinden, was Sie tun möchten. Testen Sie einfach auf eine CSS-Eigenschaft. Wenn Sie jedoch die absolute Positionierungsstrategie verwenden, muss der Bot alle Ihre Positionierungsregeln analysieren und die Regeln der meisten Eltern des Elements, um herauszufinden, ob die Eingabe sichtbar ist oder nicht, und dann herauszufinden, ob auf diese Informationen reagiert werden soll oder nicht – was für die meisten (wenn nicht alle) mehr Mühe als Wert ist ) Bots.

    – totalNotLizards

    18. März 2013 um 10:35 Uhr

Eine einfach zu implementierende, aber nicht narrensichere (insbesondere bei “spezifischen” Angriffen) Methode zur Lösung von Anti-Spam ist die Verfolgung der Zeit zwischen dem Absenden des Formulars und dem Laden der Seite.

Bots fordern eine Seite an, analysieren die Seite und senden das Formular ab. Das ist schnell.

Menschen geben eine URL ein, laden die Seite, warten, bis die Seite vollständig geladen ist, scrollen nach unten, lesen den Inhalt, entscheiden, ob sie das Formular kommentieren/ausfüllen, benötigen Zeit zum Ausfüllen des Formulars und senden es ab.

Der Zeitunterschied kann subtil sein; und um diese Zeit ohne Cookies zu verfolgen, ist eine serverseitige Datenbank erforderlich. Dies kann sich auf die Leistung auswirken.
Außerdem müssen Sie die Schwellenzeit anpassen.

  • Achten Sie darauf, wenn Sie Endbenutzern erlauben möchten, automatische Formularausfüller wie z addons.mozilla.org/en-US/firefox/addon/1882 das kann eine sehr schnelle Übermittlung ermöglichen. Abgesehen von Captcha ist alles, was den Endbenutzer nervt, im Allgemeinen nicht gut, insbesondere wenn es darum geht, eine in Eile befindliche Person daran zu hindern, (sehr) schnell zu gehen.

    – Schneeflocke

    5. März 2010 um 15:41 Uhr

  • Guter Punkt, aber es hängt alles vom Kontext ab. Wenn das Formular ein Login-Formular ist, stimme ich Ihnen vollkommen zu. Aber warum die Anmeldung von Bots deaktivieren? Wenn der Kontext ein Kommentarfeld ist, wie dieses auf StackOverflow, weiß ich mit Sicherheit: Wenn Sie das automatische Ausfüllen eines Kommentarfelds verwenden, sind Sie ein Spammer. Beachten Sie, dass Sie, wenn Sie das automatische Ausfüllen für Signaturen verwenden, immer noch Zeit benötigen, um den Inhalt tatsächlich einzugeben.

    – Pindatjuh

    5. März 2010 um 15:47 Uhr


  • Beachten Sie, dass SO so etwas tut. Bearbeiten Sie einen Kommentar zu schnell oder zu oft hintereinander und Sie erhalten die Frage „Sind Sie ein Mensch?“. Seite.

    – Jakob Borg

    21. Mai 2010 um 18:32 Uhr

  • Hacker werden nicht immer das Formular anfordern. Manchmal reicht eine sorgfältig erstellte URL (mit GET oder POST) aus, um das Formular mit wenig Aufwand mehrmals zu senden.

    – Handwerker

    30. Juli 2013 um 14:46 Uhr

  • Implementieren Sie dies mit Captcha. Wenn das Formular zu schnell gesendet wurde, zeigen Sie ein Captcha an, um echte Benutzer durchzulassen.

    – Yashovardhan99

    14. Juli 2017 um 7:34 Uhr

Benutzeravatar von Roko C. Buljan
Roko C. Buljan

Was wäre wenn – Der Bot findet keine form überhaupt?

3 Beispiele:

  1. Fügen Sie Ihr Formular mit AJAX ein
  • Wenn Sie damit einverstanden sind, dass Benutzer JS deaktiviert haben und ein Formular nicht sehen/abschicken können, können Sie sie benachrichtigen und sie zuerst mit einer noscript-Anweisung Javascript aktivieren lassen:
<noscript>
  <p class="error">
    ERROR: The form could not be loaded. Please enable JavaScript in your browser to fully enjoy our services.
  </p>
</noscript>
  • Ein … kreieren form.html und platzieren Sie Ihre form in einem <div id="formContainer"> Element.

  • Verwenden Sie auf der Seite, auf der Sie dieses Formular aufrufen müssen, ein Leerzeichen <div id="dynamicForm"></div> und diese jQuery: $("#dynamicForm").load("form.html #formContainer");

  1. Erstellen Sie Ihr Formular vollständig mit JS
// THE FORM
var $form = $("<form/>", {
  appendTo : $("#formContainer"),
  class    : "myForm",
  submit   : AJAXSubmitForm
});

// EMAIL INPUT
$("<input/>",{
  name        : "Email", // Needed for serialization
  placeholder : "Your Email",
  appendTo    : $form,
  on          : {        // Yes, the jQuery's on() Method 
    input : function() {
      console.log( this.value );
    }
  }
});

// MESSAGE TEXTAREA
$("<textarea/>",{
  name        : "Message", // Needed for serialization
  placeholder : "Your message",
  appendTo    : $form
});

// SUBMIT BUTTON
$("<input/>",{
  type        : "submit",
  value       : "Send",
  name        : "submit",
  appendTo    : $form
});

function AJAXSubmitForm(event) {
  event.preventDefault(); // Prevent Default Form Submission
  // do AJAX instead:
  var serializedData = $(this).serialize();
  alert( serializedData );
  $.ajax({
    url: '/mail.php',
    type: "POST",
    data: serializedData,
    success: function (data) {
      // log the data sent back from PHP
      console.log( data );
    }
  });
}
.myForm input,
.myForm textarea{
  font: 14px/1 sans-serif;
  box-sizing: border-box;
  display:block;
  width:100%;
  padding: 8px;
  margin-bottom:12px;
}
.myForm textarea{
  resize: vertical;
  min-height: 120px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="formContainer"></div>
  1. Bot-Köder Eingang
  • Bots mögen (Ja wirklich wie) frech Eingabeelemente wie:
<input 
  type="text"
  name="email"
  id="email"
  placeholder="Your email"
  autocomplete="nope"
  tabindex="-1"
They wll be happy to enter some value such as
`[email protected]`
  • Nachdem Sie das obige HTML verwendet haben, können Sie auch CSS verwenden, um die Eingabe nicht anzuzeigen:
input[name=email]{ /* bait input */
  /* do not use display:none or visibility:hidden
     that will not fool the bot*/
  position:absolute;
  left:-2000px;
}
  • Jetzt, da Ihre Eingabe für den Benutzer nicht sichtbar ist, erwarten Sie in PHP, dass Ihre $_POST["email"] sollte leer sein (ohne Wert)! Senden Sie das Formular andernfalls nicht ab.
  • Schließlich müssen Sie nur noch erstellen ein weiterer Eingang wie
    <input name="sender" type="text" placeholder="Your email"> nach (!) das “Bot-Köder” Eingabe für die tatsächliche E-Mail-Adresse des Benutzers.

Danksagungen:

Developer.Mozilla – Automatische Formularvervollständigung deaktivieren

StackOverflow – Tabindex ignorieren

  • Könnte der Browser eines legitimen Benutzers möglicherweise das Köder-Eingabefeld als E-Mail-Feld sehen und es automatisch ausfüllen, wenn der Benutzer den Rest des Formulars automatisch ausfüllt? Der Benutzer würde nicht sehen, dass ein Feld weit außerhalb des Bildschirms ausgefüllt wurde, und er würde immer noch wie ein Bot aussehen.

    – wilbbe01

    4. April 2016 um 14:23 Uhr

  • Ich vermute autocomplete=nope würde standardmäßig on 😉 MDN: input#attr-autocomplete

    – handhaben

    13. April 2018 um 11:13 Uhr


  • @handle spielt keine Rolle, es ist eine Bot-Köder-Eingabe. Du kannst schreiben autocomplete="oh sunny day" für diese Angelegenheit.

    – Roko C. Buljan

    13. April 2018 um 11:17 Uhr


  • @RokoC.Buljan kreative Anti-Bot-Lösungen, danke fürs Teilen

    – avia

    27. Oktober 2020 um 21:27 Uhr

Benutzeravatar von adnhack
Adnhack

Was ich getan habe, ist, ein verstecktes Feld zu verwenden und den Zeitstempel darauf zu setzen und ihn dann mit PHP mit dem Zeitstempel auf dem Server zu vergleichen.

Wenn es schneller als 15 Sekunden war (hängt davon ab, wie groß oder klein Ihre Formulare sind), war das ein Bot.

Ich hoffe das hilft

Eine sehr effektive Möglichkeit, Spam praktisch zu eliminieren, ist ein Textfeld mit Text wie “Entfernen Sie diesen Text, um das Formular zu senden!” und dieser Text muss entfernt werden, um das Formular absenden zu können.

Wenn das Textfeld nach der Formularvalidierung den Originaltext oder zufälligen Text enthält, senden Sie das Formular nicht ab. Bots können Formularnamen lesen und automatisch Namens- und E-Mail-Felder ausfüllen, wissen aber nicht, ob sie zum Senden tatsächlich Text aus einem bestimmten Feld entfernen müssen.

Ich habe diese Methode auf unserer Unternehmenswebsite implementiert und sie hat den Spam, den wir täglich erhalten haben, vollständig eliminiert. Es funktioniert wirklich!

  • Interessant, wissen Sie, ob es effektiver ist als die anderen Antworten … ein verstecktes Textfeld oder das Nachverfolgen der Zeit, die zum Ausfüllen des Formulars benötigt wird?

    – Austin Henley

    24. September 2012 um 5:17 Uhr

  • Dies würde auch diejenigen Benutzer erwischen, die Anweisungen nicht folgen können, was möglicherweise nicht erwünscht ist.

    – wilbbe01

    4. April 2016 um 14:14 Uhr

  • Ich mag das! Bis der Bot anfängt, verschiedene Kombinationen aus leeren und ausgefüllten Feldern auszuprobieren … Der beste Weg zum Testen ist, dies zu implementieren und mit einem der folgenden zu scannen: sectoolmarket.com/…

    – nmit026

    8. Februar 2017 um 20:56 Uhr

  • Effektiv, solange die Person, die den Bot verwaltet, es nicht herausfindet und den Code optimiert.

    – Talha Awan

    27. Mai 2017 um 11:46 Uhr

  • Das Stoppen allgemeiner Spam-Bots ist sowieso einfach, wenn es sich um einen gezielten Bot handelt, ist CAPTCHA die einzige Lösung

    – Abhishek Choudhary

    17. September 2021 um 16:01 Uhr

Steves Benutzeravatar
Steve

Wie wäre es, wenn Sie ein Textfeld-Eingabefeld in derselben Farbe wie der Hintergrund erstellen, der leer bleiben muss? Dadurch wird das Problem umgangen, dass ein Bot display:none liest

  • Interessant, wissen Sie, ob es effektiver ist als die anderen Antworten … ein verstecktes Textfeld oder das Nachverfolgen der Zeit, die zum Ausfüllen des Formulars benötigt wird?

    – Austin Henley

    24. September 2012 um 5:17 Uhr

  • Dies würde auch diejenigen Benutzer erwischen, die Anweisungen nicht folgen können, was möglicherweise nicht erwünscht ist.

    – wilbbe01

    4. April 2016 um 14:14 Uhr

  • Ich mag das! Bis der Bot anfängt, verschiedene Kombinationen aus leeren und ausgefüllten Feldern auszuprobieren … Der beste Weg zum Testen ist, dies zu implementieren und mit einem der folgenden zu scannen: sectoolmarket.com/…

    – nmit026

    8. Februar 2017 um 20:56 Uhr

  • Effektiv, solange die Person, die den Bot verwaltet, es nicht herausfindet und den Code optimiert.

    – Talha Awan

    27. Mai 2017 um 11:46 Uhr

  • Das Stoppen allgemeiner Spam-Bots ist sowieso einfach, wenn es sich um einen gezielten Bot handelt, ist CAPTCHA die einzige Lösung

    – Abhishek Choudhary

    17. September 2021 um 16:01 Uhr

Benutzeravatar von handle
handhaben

http://recaptcha.net/

reCAPTCHA ist ein kostenloser Antibot-Dienst, der bei der Digitalisierung von Büchern hilft

Es wurde von Google erworben (2009):

Siehe auch

  • Als Benutzer finde ich Recaptcha oft schwer herauszufinden. Einige der Wörter sind so schwer zu lesen, dass Sie es am Ende 3 oder 4 Mal versuchen müssen. Obwohl dies definitiv bei dem Roboterproblem helfen wird.

    – Brian

    5. März 2010 um 14:50 Uhr

  • Was Brian gesagt hat und: yro.slashdot.org/story/10/03/02/0135238/…

    – SF.

    5. März 2010 um 15:22 Uhr

  • Ich habe mich auf dieser Seite wiedergefunden, weil CAPTCHA/reCAPTCHA die Übermittlung von Bot-Formularen derzeit nicht stoppt. Dies ist 5 Jahre später und es ist eine neue Technik als damals, als diese Antwort gegeben wurde

    – JohnnyFaldo

    25. September 2015 um 7:33 Uhr


  • Ich bin erstaunt, warum diese Antwort nicht mehr Upvotes hat. ob dem Benutzer gefällt oder nicht, dies ist eine großartige Lösung. Vor allem, wenn es nur für das Registrierungsformular verwendet wird.

    – towi_parallelismus

    8. März 2016 um 15:36 Uhr

  • Heutzutage beginnt Recaptcha als einfaches Kontrollkästchen, vielleicht ist es nicht mehr so ​​schmerzhaft wie früher? …

    – Rogerpack

    15. Februar 2017 um 17:44 Uhr

1433760cookie-checkWie kann verhindert werden, dass Roboter ein Formular automatisch ausfüllen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy