Spamschutz¶
Newsletter → Konfiguration → Module → Spamschutz
Schützt das Anmelde- und das Abmeldeformular vor automatisierten Eintragungen — ohne Bilderrätsel, ohne fremden Dienst und ohne eine einzige gespeicherte IP-Adresse. Ein Besucher merkt im Normalfall nichts davon.
Neu in 2.0, in beiden Fassungen.
Schalten Sie das Modul ein und lassen Sie die Vorgaben stehen
Die Vorgabe passt für fast jede Website: drei Schichten an, die vierte aus. Wenn trotzdem Eintragungen durchkommen, schalten Sie die Rechenaufgabe dazu — nicht vorher.
Was Sie damit abschalten können¶
Das Captcha-Modul mit Google reCAPTCHA. Und das ist der eigentliche Punkt:
| Spamschutz | Google reCAPTCHA | |
|---|---|---|
| Fremder Dienst | nein | ja, Google LLC |
| IP-Adresse des Besuchers | wird nicht gespeichert und nicht übertragen | geht an Google |
| Einwilligung nötig | nein | ja |
| Eigener Abschnitt in der Datenschutzerklärung | nein | ja |
| Sichtbar für den Besucher | nein | ja |
Die fünf Schichten¶
Sie prüfen nacheinander. Vier davon merkt ein Besucher nie.
| Schicht | Was sie prüft | Vorgabe |
|---|---|---|
| Lockfeld | Ein unsichtbares Feld, das niemand ausfüllen kann | an |
| Verweildauer | Wurde das Formular geöffnet, und lag zwischen Öffnen und Absenden Zeit? | an |
| Rechenaufgabe | Hat der Browser vorher etwas gerechnet? | aus |
| Inhaltsprüfung | Steht in den Feldern etwas, das kein Mensch einträgt? | an |
| Ratenbegrenzung | Wie viele Anmeldungen kamen in dieser Stunde? | an |
Lockfeld im Formular¶
Ein Textfeld, das für Besucher unsichtbar ist. Wer es ausfüllt, ist keiner.
Der Feldname ist bei jeder Installation ein anderer — er wird aus dem Sicherheitsschlüssel Ihrer Installation abgeleitet. Ein Programm, das auf einen festen Namen wartet, läuft damit ins Leere.
Versteckt wird es dreifach: im Element selbst, über eine Klasse und für Vorleseprogramme. Die erste ist kein Zierrat — überschreibt ein Theme die Stildatei des Plugins, stünde sonst ausgerechnet dort ein sichtbares Feld, das jede Eintragung stillschweigend verwirft.
Verweildauer prüfen¶
Das Formular holt beim Aufruf einen signierten Zeitstempel und schickt ihn mit zurück. Wer sofort absendet, hat nicht ausgefüllt.
Mindestverweildauer in Sekunden — Vorgabe 3. Wer schneller absendet, bekommt die Bitte, das Formular noch einmal abzuschicken; der zweite Versuch geht durch.
Warum der Zeitstempel nicht im HTML steht
Weil Ihre Seite in einem Cache liegen kann. Dann stünde dort der Zeitpunkt, an dem der Cache gefüllt wurde — und der ist beim Besucher Stunden alt.
Das Feld geht deshalb leer hinaus und wird im Browser nachgefüllt. Für Sie heißt das: Das Formular darf ohne Weiteres auf einer vielbesuchten, zwischengespeicherten Seite stehen.
Rechenaufgabe im Hintergrund¶
Ab Werk aus. Der Browser sucht vor dem Absenden die Lösung einer kleinen Rechenaufgabe. Der Besucher merkt davon nichts — gerechnet wird, während er das Formular ausfüllt. Für ein Programm, das tausend Anmeldungen schicken will, wird es dadurch teuer.
| Stufe | Rechenschritte | Auf einem Telefon |
|---|---|---|
| niedrig | etwa 22.000 | unmerklich |
| mittel | etwa 140.000 | Bruchteil einer Sekunde |
| hoch | etwa 1,2 Millionen | mehrere Sekunden |
Wer trotzdem vorher absendet, wartet höchstens acht Sekunden und bekommt dann die Bitte um einen zweiten Versuch.
Wann Sie das einschalten sollten
Wenn trotz der übrigen Schichten Eintragungen durchkommen. Vorher nicht: Die Aufgabe kostet Rechenzeit auf dem Gerät Ihres Besuchers, und drei Schichten reichen in aller Regel.
Mittel ist der richtige Anfang. Hoch ist auf einem alten Telefon spürbar.
Eingaben auf Spam-Muster prüfen¶
Vier Regeln auf Anrede, Vorname, Name, Straße, PLZ und Ort:
| Regel | Warum |
|---|---|
| Internetadresse oder BBCode in einem Namensfeld | Das häufigste Muster überhaupt: Eingetragen wird nicht, um den Newsletter zu bekommen, sondern damit Sie den Verweis im Backend sehen |
| Steuerzeichen in einem einzeiligen Feld | Zeilenumbrüche sind der klassische Versuch, einer Mail eigene Kopfzeilen unterzuschieben |
| Zwei Schriftsysteme in einem einzelnen Wort | Etwa ein kyrillisches М in Мüller. Über Wortgrenzen hinweg wird nicht geprüft: Ein griechischer Nachname neben einem deutschen Vornamen ist in Ordnung. Umlaute sind lateinisch und lösen nichts aus |
| Vorname, Nachname und der Teil vor dem @ alle gleich |
Diese Schicht ist die einzige, die sichtbar meldet und das Feld nennt. Still verwerfen wäre hier falsch — es träfe im Zweifel jemanden, der seinen Ort „St. Peter-Ording" nennt, und der erführe nie, woran es lag.
Gesperrte E-Mail-Domains — eine Domain je Zeile. Gesperrt ist sie selbst
und alles darunter: Wer wegwerf.test sperrt, sperrt auch
mail.wegwerf.test.
Ratenbegrenzung¶
Zwei Zähler, jeweils ein Fenster von einer Stunde:
| Einstellung | Vorgabe | Wogegen |
|---|---|---|
| Anmeldeversuche je Adresse und Stunde | 3 | Ein fremdes Postfach mit Bestätigungsmails zuschütten |
| Anmeldungen insgesamt je Stunde | 60 | Den Ruf Ihrer Absenderdomain durch Massenversand verlieren |
0 schaltet die jeweilige Begrenzung ab.
Der Zähler an der Adresse wirkt vor allem beim Abmelden: Beim Anmelden kann ohnehin nur eine Bestätigungsmail je Adresse hinausgehen, die zweite fängt die Dublettenprüfung ab. Beim Abmelden geht die Mail an jemanden, der schon eingetragen ist — und zwar bei jedem Absenden erneut.
Keine IP-Adresse, auch keine gehashte
Das kostet Trennschärfe: Wer aus vielen Adressen streut, läuft nur in den Gesamtzähler. Dafür entsteht kein einziger Datensatz, der einen Besucher beschreibt.
Anmeldung ohne JavaScript zulassen¶
Vorgabe an. Ohne JavaScript greifen Verweildauer und Rechenaufgabe nicht; die übrigen Schichten prüfen weiter.
Abschalten sperrt Besucher ohne JavaScript aus. Das sind wenige — aber es sind auch Vorleseprogramme, alte Geräte und Leute mit strengen Browsereinstellungen.
Was der Besucher zu sehen bekommt¶
| Fall | Antwort |
|---|---|
| Lockfeld ausgefüllt | Die Meldung des Erfolgsfalls. Gespeichert wird nichts |
| Nachweis gefälscht, aus der Zukunft, unbrauchbar oder zweimal benutzt | dieselbe |
| Rechenaufgabe falsch gelöst | dieselbe |
| Zu schnell abgeschickt | „Das ging uns zu schnell. Bitte senden Sie das Formular noch einmal ab." |
| Formular über eine Stunde offen | „Das Formular war zu lange geöffnet. Bitte senden Sie es noch einmal ab." |
| Rechenaufgabe noch nicht fertig | „Die Prüfung im Hintergrund war noch nicht fertig. …" |
| Kein Nachweis, und „ohne JavaScript" steht auf aus | „Für die Anmeldung wird JavaScript benötigt. …" |
| Inhaltsprüfung | benennt das Feld |
| Gesperrte Domain | „Von dieser E-Mail-Domain nehmen wir keine Anmeldungen entgegen. …" |
| Ratenbegrenzung erreicht | „Es gab gerade sehr viele Anmeldungen. Bitte versuchen Sie es in einer Stunde noch einmal." |
Die Trennlinie ist bewusst gezogen: Was kein Versehen sein kann, wird still verworfen — wer merkt, dass er aufgefallen ist, probiert es anders herum weiter. Was einen Menschen treffen kann, bekommt einen Satz, aus dem hervorgeht, was zu tun ist.
Die Zähler in der Modulmaske¶
Unten auf der Modulseite steht Was der Schutz abgewiesen hat — je Abweisungsgrund eine Zahl, dazu der Zeitraum.
So lesen Sie sie:
| Was oben steht | Was das heißt |
|---|---|
| Vor allem Lockfeld ausgefüllt | Einfache Programme. Der Schutz tut genau, was er soll |
| Vor allem Internetadresse in einem Namensfeld | Jemand will Verweise in Ihrem Backend unterbringen |
| Viel Zu schnell abgeschickt | Entweder Programme, oder Ihre Mindestverweildauer ist zu hoch. Bei echten Besuchern folgt darauf ein zweiter, erfolgreicher Versuch |
| Ratenbegrenzung erreicht in größerer Zahl | Ein gezielter Ansturm. Jetzt ist der Zeitpunkt für die Rechenaufgabe |
| Überall Null | Entweder ist das Modul noch nicht lange aktiv, oder es ist gerade ruhig. Beides ist gut |
Zähler zurücksetzen stellt sie auf Null — nützlich, um die Wirkung einer Änderung zu sehen.
Die Zähler enthalten nur Zahlen. Keine Adresse, keine Eingabe, nichts, was einen Besucher beschreibt.
Was das Modul am Abmelden geändert hat¶
Der Abmeldeweg lief bis 1.1.4 ganz ohne Prüfung — und die Antwort „Ein Abonnent mit dieser E-Mail-Adresse wurde nicht gefunden" beantwortete für jede beliebige Adresse die Frage, ob sie in Ihrer Liste steht.
Seit 2.0 ist die Antwort neutral: Dieselbe Meldung, dieselbe Zielseite, ob die Adresse eingetragen ist oder nicht.
Für Betreiber mit aktivem Captcha-Modul
Die Captcha-Prüfung greift ab 2.0 auch beim Abmelden. Das Feld stand dort schon immer im Formular — es ist dasselbe Formular —, geprüft wurde es nur nie.
Wenn Sie eine eigene Formularvorlage haben¶
Wer register/index.phtml oder register/kompakt.phtml in seinem Theme oder
in den eigenen Vorlagen liegen hat, braucht darin die Zeile
<?php $this->callMods( 'register_form' ); ?>
Fehlt sie, kommen Lockfeld und Zeitnachweis nicht ins Formular. Abgewiesen wird deswegen niemand — ein fehlender Nachweis wird wie eine Anmeldung ohne JavaScript behandelt —, aber es prüfen dann nur noch Inhalt und Rate.
Wer die Stildatei des Plugins überschreibt, sollte die Klasse
.wpng_botsperre übernehmen. Zwingend ist es nicht, das Feld versteckt sich
auch selbst.
Was in Ihre Datenschutzerklärung muss¶
Wenig, und das ist der Punkt des ganzen Moduls. Gespeichert werden ausschließlich:
- der Hash eines verbrauchten Nachweises, längstens eine Stunde. Er lässt sich keinem Besucher zuordnen: Das Token enthält nichts als eine Uhrzeit und einen Zufallswert;
- zwei Zähler, längstens eine Stunde. Einer steht unter der Prüfsumme der eingegebenen Mailadresse, der andere unter einem festen Namen. Beide enthalten eine Zahl;
- die Statistik: je Abweisungsgrund eine Zahl. Kein Personenbezug.
Keine IP-Adresse, kein User-Agent, keine Kennung im Browser des Besuchers, kein Aufruf an einen fremden Server.
Ein Textvorschlag, wenn Sie es dennoch erwähnen wollen:
Unser Anmeldeformular ist gegen automatisierte Eintragungen geschützt. Dabei prüfen wir technisch, ob das Formular von einem Browser ausgefüllt wurde, und begrenzen die Zahl der Anmeldungen je Stunde. Dafür werden weder Ihre IP-Adresse noch Angaben zu Ihrem Gerät gespeichert, und es werden keine Daten an Dritte übermittelt.
Der Vorschlag ersetzt keine Rechtsberatung.

