Pixelbash
Geschichten eines Medieninformatikers

Quick & Dirty: Captcha für das Contao Newletter Tool

Eine Dose voller Spam

Ich bin genervt. Meine Newsletter-Box war gerade mal 1h online und schon hatte ich über 20 Spam Einträge in der Datenbank. Das schien mir aber noch nicht mal das Hauptproblem zu sein. Die deutschen Gesetze machten mich auf einmal zum Spammer.

Wie genau ich zum Spammer werden kann? Nun, durch die in Deutschland geltenden Gesetze, bin ich als Anbieter eines Newsletter dazu verpflichtet das sog. Double Opt-In Verfahren zu nutzen. Dabei muss ich jemanden, der sich für meinen Newsletter anmeldet, noch einmal Anschreiben und darum bitten seine E-Mail Adresse und auch gleichzeitig die Absicht zu bestätigen, dass er wirklich E-Mails von mir empfangen will. So zusamen die "Sind sie wirklich sicher?"-Frage des deutschen Rechtsystems.

Jetzt ist es aber so, dass durch den double Opt-In Prozess E-Mails versendet werden. In meinem Spam-Fall an E-Mail Adressen, die ein Spam-Bot über das Newsletter Formular einträgt.  Jetzt befürchte ich, dass man durch das massenhafte aussenden von Opt-In Mails durchaus auf einer Black-List als Spammer landen kann. Mein Newsletter Formular war gerade mal 1h online, da hatte ich bereits 20 Spam Einträge in der Datenbank und bekam laufend "Undelivered Mail Returned to Sender" E-Mails von nicht zustellbaren Opt-In Mails zurück. Ein Captcha musste also her.

Im Contao-Support Forum und auch bei GitHub gibt es einen Feature-Request, der bereits über ein Jahr alt ist. Hier wird sich auch wohl in den nächsten Wochen wohl nichts tun. Also musste ich selbst ran.

 
Zitieren

Die Lösung

Ich hab jetzt ein recht "billiges" Mathe-Captcha in mein Newsletter Formular eingebaut. Es ist eigentlich "nur" eine Quick and Dirty Lösung, die jedoch für den Moment zu funktionieren scheint, denn bisher habe ich keine Spam-Einträge in der Datenbank.

Im Template nl_default.html5 ab Zeile 19, habe ich diese beiden Zeilen drin:

<input type="hidden" name="newsletterSub" value="1">
<label for="captcha" class="invisible">Bitte rechnen Sie 4 plus 2.</label>
<input type="text" id="captcha" placeholder="Bitte rechnen Sie 4 plus 2." name="captcha" />

Soweit so gut. Damit hat man ein zusätzliches Eingabefeld, welches immer die selbe Frage anzeigt: "Bitte rechne 4 plus 2."
Und jetzt kommt der "dreckige Teil". In die allgemeine index.php von Contao habe ich ab Zeile 11 folgendes reingeschrieben:

if (isset($_POST['newsletterSub'])){
     if(!isset($_POST['captcha']) OR $_POST['captcha'] != 6){die("Spam!");}
 }

Es wird gepürft ob jemand versucht hat, sich zum Newsletter anzumelden. Wenn das Captcha nicht richtig ausgefüllt wurde, bricht die Seite an der Stelle sofort ab und gibt die Fehlermeldung "Spam!" aus.
Dreckig ist das Ganze, da es sich hier um eine Änderung der allgemeinen index.php handelt und diese besser unangetastet bleiben sollte. Denn nach einem Update, muss diese Zeile von Hand nach gepflegt werden.

Aber um fürs erste Abhilfe zu schaffen, reicht es mir zumindest.
Ich bin außerdem erstaunt, dass man keine wechselnden Mathe-Aufgaben zu brauchen scheint. 4+2 = 6 scheint schon so gut zu sein, dass die Spam-Bots nicht durch kommen.

Zurück

Einen Kommentar schreiben

Newsletter abonieren

Aboniere jetzt den Pixelbash Newsletter und verpasse keine Artikel oder kostenlosen Downloads mehr.

Pixelbash T-Shirts

Stöbere jetzt durch den Pixelbash Shop und hol dir dein eigenes Pixelbash T-Shirt.

Jetzt bestellen

Folgen, Liken, Chatten

@pixelbash
fb.com/pixelbash
IRC: #pixelbash @ freenode