michael trenkler eBuisness Solutions
Humboldtstraße 1
79098 Freiburg
info@mtcd.de | |
Telefon | +49 761 453 89 72 |
Mobil | +49 151 234 34 080 |
Kaum etwas geht mir derzeit so auf die Nerven wie das Entziffern unleserlicher Zeichenfolgen. Fast auf jeder Seite werde ich dazu gezwungen, ein für meine Anfrage/ meine Bestellung/ meinen Beitrag absolut unnötiges Eingabe-Feld auszufüllen. Je schwerer der generierte Code auf diesen Bildchen zu entziffern ist, desto mehr schwindet meine Motivation, dem Betreiber der Website meine Daten zu schicken oder an einer Diskussion teilzunehmen.Geht es Ihnen auch so?
Und haben Sie trotzdem diese Barriere in Ihren Formularen eingebaut? Wieso tun Sie das?
Ich weiss schon. Sie erhalten sonst Unmengen an SPAM-Mails, Ihr Forum oder Service-Portal läuft mit unsinnigen "Beiträgen" voll, Sie befürchten Schadcode in Ihrer Seite. Es gibt eine Menge Argumente, die den Einsatz von Captchas rechtfertigen sollen.
Aber führen Sie sich folgendes vor Augen:
Der Einsatz von Captchas verlagert Ihr Problem auf die Schultern Ihrer Kunden/ Interessenten
Da hagelt es schon eine Reihe an Gegenargumenten:
Alles richtig. Und dennoch bleibt das Problem bestehen.
Captchas stellen Sie vor weitere Probleme: Die Scripte und Robots werden immer besser im Erkennen von Text, auch wenn dieser bis zur Unkenntlichkeit zerstückelt wurde. Es gibt zwar eine Reihe an mehr oder minder sinnvollen Alternativen (siehe weiter unten), aber hier stellt sich dasselbe Problem. Es ist eine Frage der Zeit, bis Sie eine neue Methode brauchen, um Menschen von Computern zu unterscheiden.
Ein Gedanke am Rande: Der Unterschied zwischen einem Mensch und einem Computer besteht also darin, ob eine unkenntliche Ziffernfolge gelesen werden kann oder nicht? Da steckt der Fehler doch schon im Ansatz..
Captchas stellen vor allem Ihre Interessenten und Kunden vor Probleme. Der Spam-Bot schafft ein paar Tausend Versuche in der Sekunde. Ihr Besucher nicht.
Nun gut. Captchas sind also kein geeignetes Mittel, um oben genannten Problemen Herr zu werden. Wenden wir uns also möglichen Alternativen zu.
Das Problem besteht häufig darin, dass Scripte einfach alle Felder in einem Formular ausfüllen und dabei so schlau sind, zu entscheiden, welche Eingaben in welchem Feld erwartet werden.
Wir unterscheiden hier zwischen einfachen Eingabefeldern für Text und solche, die eine bestimmte Eingabe erfordern.
Einfache Eingabefelder:
Eingabefelder für Texte in einem bestimmten Format:
Diese einfache Unterscheidung wird dann effektiv, wenn wir vor dem Abschicken des Formulars überprüfen, ob die Werte dem entsprechen, was wir erwarten. Der Name beispielsweise sollte nur aus Buchstaben bestehen, die Hausnummer nur aus Zahlen, die Emailadresse sollte das für Emailadressen übliche Format haben.
Überprüft das Formular konsequent alle Eingaben auf Ihre Sinnhaftigkeit, sind wir schon einen Teil weiter:
Fazit:
Definieren Sie, welche Werte Ihre Felder annehmen dürfen. Übertreiben
Sie es damit nicht und bleiben Sie auf der sicheren Seite: Ständig
angeblich nicht zulässige Zeichen nerven beim Ausfüllen eines Formulars
genauso sehr wie Captchas!
Einen Schritt weiter:
Auch bei Überprüfung der zulässigen Zeichen schaffen es inzwischen viele Scripte, diese Anforderungen zu erfüllen. Interessant ist nun die Frage "Woher weiss das Script, in welchen Feldern welche Werte erwartet werden"?
Eingabefelder haben in der Programmierung immer einen eindeutigen Namen. Geben Sie dem Eingabefeld für die Email-Adresse nun den Namen "email", ist es nicht weiter schwer zu erraten, welches Format der Datensatz haben soll. Geben Sie diesem (und anderen) Felder(n) nun Namen, die keinen Rückschluss bieten auf das, was hier eingetragen werden soll, wird es für das Script schon wesentlich schwerer:
Dieses Formular gibt jedem Script genau Auskunft, welche Werte wo erwartet werden:
<input name="vorname" value=""/><input name="nachname" value=""/><input name="strasse" value=""/><input name="nummer" value=""/><input name="email" value=""/>
So wird es schon schwerer:
<input name="i_bv" value=""/> // Input_BasisdatenVorname <input name="i_bn" value=""/> // Input_BasisdatenNorname <input name="i_as" value=""/> // Input_AdresseStrasse <input name="i_an" value=""/> // Input_AdresseNummer <input name="I_be" value=""/> // Input_BasisdatenEmail
Spätestens beim Email-Feld dürften die meisten Scripte scheitern, da Sie hier keinen Wert im richtigen Format eintragen. Ich würde sicherheitshalber in allen Feldern außer dem Email-Feld das @-Zeichen verbieten - so vermeiden Sie, dass das Script halt einfach überall eine Email-Adresse einträgt.
Die Validierung von plausiblen Eingabewerten in unterschiedlichen Feldern kann bereits einen einfachen Lösungsansatz darstellen.
Eine weitere Möglichkeit besteht darin, ein Input-Feld anzulegen, welches nicht ausgefüllt werden soll. Damit auch wirklich keiner auf die Idee kommt, es trotzdem zu tun, können Sie dieses Feld recht einfach per css verstecken.
Sobald also nun ein Submit des Formulars erfolgt und dieses Feld mit einem beliebigen Wert gefüllt wurde, können Sie davon ausgehen, daß hier ein Programm am Werke war.
<input name="ichSollLeerBleiben" value=""/> // Honeypot Feld
Achten SIe bei dieser Technik auf 2 Dinge:
Als Honigtopf oder auch englisch Honeypot wird eine Einrichtung bezeichnet, die einen Angreifer oder Feind vom eigentlichen Ziel ablenken soll oder die Personen in einen Bereich hineinziehen soll, der sie sonst nicht interessiert hätte. Der Ursprung stammt aus der Beschäftigung mit Bären, die man mit einem Honigtopf sowohl von einem Angriff auf die eigene Person oder das eigene Lebensmittellager ablenken, als auch in eine Falle locken kann.
[Wikipedia]
Es geht auch ohne Captcha. Zugegeben, es bedeutet einen etwas höheren Aufwand bei der Erstellung der Formulare. Die Erfahrung zeigt, dass einfach gehaltene Formulare mehr wertvolle Emails von Ihren Kunden und Interessenten bedeuten. Und das sollte es wert sein - finde ich.