0251 / 590 837 15
info@a-coding-project.de

Kontaktformular mit 2 Zeilen Code gegen Spam schützen

Ich bekomme in meinem Kontaktformular aktuell sehr viele Spam-Anfragen. Um das zu verringern hatte ich bereits eine kleine Mathe-Aufgabe als CAPTCHA eingeabut, doch auch diese konnten die Bots leicht lösen. Allerdings möchte ich ungern eine größere CAPTCHA einbauen, da viele Leute diese so gar nicht mögen => Schlecht für die Conversion-Rate.

Eine Alternative ist, sich bei fremden Diensten über die IP / die Benutzerdaten zu informieren. Einen solchen Dienst bietet zum Beispiel StopForumSpam.

Um das im Kontaktformular zu nutzen, können wir uns vorab mit der IP bei StopForumSpam melden und schauen, ob diese als Spam-Bot bekannt ist. Ist das der Fall, zeigen wir ein Bild an, andernfalls ein Kontaktformular:

<?php
$xml = simplexml_load_file("http://www.stopforumspam.com/api?ip=".urlencode($_SERVER['REMOTE_ADDR']));
if($xml->appears == "yes")
{
	// Vermutlich ein Bot. Bild mit Kontaktdaten anzeigen
}
else
{
	//Kontaktformular anzeigen
}
?>

Im Falle des Bots zeige ich jetzt meine Mail-Adresse als Bild an. Das hat den Hintergrund, dass gerade diese Besucher die Mail-Adressen vermutlich loggen und dazu benutzen, um mir Spam zu schicken – und das will ich ja vermeiden.

Ich habe mal mit einigen Spammer-IPs getestet und konnte gute Ergebnisse feststellen. Schauen wir mal, ob mein Postfach jetzt leerer wird 😉

Kommentare

marco schrieb am 25.11.2013:

Hallo Stevie, tolle Idee. Ich hatte lange Zeit einen Deppen, der mich 4 Jahre lang verfolgt hat und jede Seite, die ich gebaut habe, mit Spam vollgedonnert. So musste ich mich mühevoll in die Tiefen von sicheren Formularen einarbeiten. Aktuell verwende ich auch eine kleine Matheaufgabe. Da aber Bots sowas bekanntlich relativ schnell gelöst haben (die Möglichkeiten sind auch mehr als gering), bin ich auch am überlegen. Deine Lösung gefällt mir sehr gut - ich werde das ausprobieren - Danke. Viele Grüße Marco

Jörg schrieb am 25.11.2013:

Was auch gut funktioniert, sind reine JavaScript Formulare. Oder die Zeit abfragen, wielange sich jemand auf der Seite aufhält, bevor das Formular abgeschickt wird. In der Regel braucht ein Bot dafür keine Sekunde. Besser als eine Matheaufgabe, ist mMn eine simple Frage, die ein Bot nicht so einfach nachvollziehen kann - z.B. Wie heißt Franz Beckenbauer mit Vornamen :-)

Peter schrieb am 26.11.2013:

Ich nutze seit Jahren sehr erfolgreich eine Kombo aus Timestamp (unter 5 Sek zwischen Seitenaufruf und Formularversand ist ein Bot) sowie einem Hidden-Field mit den Namen "email" (wenn das ausgefüllt wird, ist es ein Bot). Funktioniert bislang 1a.

Sergej Müller schrieb am 29.11.2013:

Nö, darf man in Deutschland nicht verwenden, die Lösung. Ist nicht Datenschutz-konform. Du muss deine Kontaktformularnutzer erst fragen, ob sie damit einverstanden sind, dass die IP ins Ausland geschickt und dort gespeichert wird. Oder zumindest sie in Kenntnis setzen.

Stefan Wienströer schrieb am 30.11.2013:

Da habe ich leider nicht drüber nachgedacht, hast natürlich Recht. Es gibt aber auch eine IP-Liste von denen, die man sich holen kann. So holt man sich alle IPs, die auf der Blacklist sind und prüft dann auf den eigenen Server und gibt die IP somit nicht weiter: http://www.stopforumspam.com/downloads/

PR Wochenrückblick KW48 &#8211; Die Highlights der Woche | PR - Popularity Reference GmbH schrieb am 05.12.2013:

[&#8230;] “Mit nur zwei Code-Zeilen das Kontaktformular gegen Spam schützen!“ Wie das geht? Ganz einfach, wie uns Stefan Wienströer am Montag zeigte. Stefan bekommt viele Spam-Anfragen über sein Kontaktformular. Ein Capatcha-Code hilft hier nur bedingt, da sich dies meist auf die Conversion-Rate auswirken kann. Eine Alternative hierzu bietet der Dienst StopForumSpam: [&#8230;]

Jannik schrieb am 06.12.2013:

Eine relativ einfacher Spam-Schutz besteht darin, Felder mit den Namen mail, text usw. einzufügen, diese aber nicht auszuwerten bzw. wenn diese nicht leer sind die weitere Verarbeitung abzubrechen. Den auszufüllenden Feldern dafür nicht zu erratende Namen geben, z. B. fsdkjfl für den Namen. Nutze ich bei meinen Logins, ein paar Bots haben täglich zwei verschiedene Logins ausprobiert. Machen die jetzt immer noch, aber die Felder gelten ja nicht mehr ;) Also ähnlich der Lösung von Peter. Die Timestamp-Idee ist natürlich auch eine Interessante und den Benutzer nicht belastende Lösung. Falls Peter noch mitliest: kannst du mal loggen, wie oft der Timestamp-Schutz anspricht?