Zum Inhalt

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.

Die Einstellungen des Spamschutzes

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.

Die Zähler des Spamschutzes

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.