Am meisten nerven überflutete Datenbanken voller Spam. Und auf dem zweiten Platz landen die Techniken das zu verhindern!Nervige Captchas, Rechenaufgaben, Fragen; größtenteils leicht zu beantworten und trotzdem hinderlich. Hier kommt ein Weg um Spam in Gästebüchern zu verhindern und dabei volle Nutzerfreundlichkeit zu erhalten. Möglich wird das komplett auf Seite des Servers damit der arme User nicht verwirrt wird.
Ein Artikel von Paul Lunow, erschienen 2008 auf Interaktionsdesigner.de.
Zuletzt überarbeitet am von
Denkst Du darüber nach zu gründen? Eine Familie oder ein Startup oder beides? In der zweiten Staffel meines Podcasts spreche ich mit tollen Menschen genau darüber. Lass Dich inspirieren und abonniere meinen Podcast: Auf Apple Podcast, Spotify und auf www.gründerväter.net.
Jetzt auch als WordPress Plugin verfügbar!
Das Gästebuch von Papyros eignet sich zu testzwecken sehr gut. Selten schreiben echte Menschen, Bots werden aber magisch angezogen. Vor der Abschaltung waren es 30 bis 40 Einträge pro Tag die veröffentlich wurden. Dagegen wurden etwa 7000 aussortiert.
Nachfolgende Regeln wende ich auf jeden neuen Eintrag an. Die technische Umsetzung folgt.
Ja! Seit guten 24 Stunden ist der Filter jetzt im Einsatz und hat schon 44 Nachrichten abgewiesen. Alle Nachrichten laden im Spamlog und sehen typischer Weise so aus:
E-Mailadresse im Namenfeld
Zu viele Links im Text
Die E-Mailadresse ist nicht korrekt
---------------
Hi, The new changes to the site look great. <a href= <a href="http://www.flingblogger.com/hotfling6/senior-relationships-the-best-dating-site.html">senior relationships-the best dating [...]
Für Informationszwecke logge ich die Nachrichten und Gründe der Ablehnung mit.
HTML Ein wirksamer Schutz lässt sich sehr schnell und einfach implementieren. Im Formular brauchen wir nur geringe Änderungen:
<form method="post" action="gaestebuch.html**?s=<?=time()?>**">
<input type="hidden" name="nachname" value="">
<label for="mail">Name:</label>
<input type="text" name="**mail**" value=""><br>
<label for="name">E-Mail:</label>
<input type="text" name="**name**" value=""><br>
<label for="text">Eintrag:</label>
<textarea name="text"></textarea><br>
<label></label>
<input type="submit" value="Eintragen!" style="width:auto">
</form>
Name und E-Mailfeld sind intern bezeichnet. Werden “for” Attribute vom Labelelement eventuell vorgelesen? Zur Messung der Zeit wird die aktuelle Zeit als GET-Parameter mitübergeben. PHP Die oben angesprochenen Regeln sind nichts weiter als einfache if-Statements. Fehlermeldungen werden in ein Array geschrieben, wenn dieses nicht leer ist, kein Eintrag im Gästebuch gemacht. So sieht das bei mir aus:
// === spam robot filter ===
$spam = Array();
// Wurde das Formular zu schnell ausgefüllt?
$pt = time() - $_GET["s"];
if($pt < 5)
$spam[] = "Zu schnell ausgefüllt ($pt ms)";
// Vertauschte Bezeichnungen Name und Mail
if(ereg('^[-!#$%&'*+\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+.'.'[-!#$%&'*+\./0-9=?A-Z^_`a-z{|}~]+$', $_POST["mail"]))
$spam[] = "E-Mailadresse im Namenfeld";
// Leeres Feld Nachname
if(!empty($_POST["nachname"]))
$spam[] = "Eingabewerte im Hiddenfeld 'Nachname'";
// Anzahl Links im Text
if(substr_count($text, "http://") > 1)
$spam[] = "Zu viele Links im Text";
// E-Mailadresse korrekt?
if(!ereg('^[-!#$%&'*+\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+.'.'[-!#$%&'*+\./0-9=?A-Z^_`a-z{|}~]+$', $_POST["name"]))
$spam[] = "Die E-Mailadresse ist nicht korrekt";
Fertig!
Mal abgesehen davon das niemand mehr Gästebucheinträge schreibt, ist mir noch nichts kritisches aufgefallen. Vielleicht könnte durch das verschicken, ausdrucken, einscannen und hochladen des Formulars der Timestamp durcheinander kommen.
Sollten die Bots es irgendwann geschafft haben und Einträge verfassen, dann habe ich noch ein paar Dinge, die ich gerne ausprobieren würde. Dazu dann bei Gelegenheit. Bisher läuft es wunderbar.
Genau heute kam der erste Spamkommentar über diesen Blog rein. Wie schreibt man WordPress Plugins?! Hier ist ein Vorschlag!