Zum Inhalt springen

blockHeadless und Blockliste

Neben den erlaubten Domains und Turnstile bietet Frontmail zwei schlanke Filter, die Sie im SDK, im Dashboard oder an beiden Stellen aktivieren können. Die Einstellungen im Dashboard finden Sie auf der Seite Sicherheit (ändern können sie Inhaber und Admins).

Lehnt Sendungen aus automatisierten Headless-Browsern ab (Puppeteer, Playwright, Selenium und ähnliche), die oft von Formular-Spam-Bots verwendet werden.

init({ publicKey: 'pk_4f2a…', blockHeadless: true });
  • Im SDK läuft die Prüfung im Browser, bevor eine Anfrage gestellt wird: send() schlägt mit einem BlockedError mit dem Code headless_blocked fehl. Keine Anfrage, kein Credit.
  • Unter Sicherheit → Schutz vor Missbrauch → Headless-Browser blockieren lehnt auch die API Anfragen mit öffentlichem Schlüssel ab, deren User-Agent einen Headless- oder automatisierten Browser erkennen lässt (HeadlessChrome, Puppeteer, Playwright, Selenium, PhantomJS, jsdom …). Nutzen Sie beides.

Legitime Nutzer sind nicht betroffen, Ihre eigenen End-to-End-Tests dagegen schon – senden Sie in Tests mit einem privaten Schlüssel oder deaktivieren Sie die Option in Testumgebungen.

Eine Blockliste lehnt Sendungen ab, deren Empfänger – oder der Wert eines gewählten Parameters – mit einem Eintrag übereinstimmt. Typische Einsätze: die Adresse eines hartnäckigen Spammers, Wegwerf-E-Mail-Domains, ein Wettbewerber, der Ihre Formulare abgrast.

init({
publicKey: 'pk_4f2a…',
blockList: {
list: ['spam@example.net', 'mailinator.com'],
watchVariable: 'email', // zu prüfender Parameter oder Formularfeld
},
});
  • Werte werden nach dem Entfernen von Leerzeichen am Anfang und Ende ohne Beachtung der Groß-/Kleinschreibung verglichen. Ein Eintrag ohne @ (oder mit @ am Anfang, wie @mailinator.com) trifft jede Adresse dieser Domain; andere Einträge müssen exakt mit einer E-Mail-Adresse oder dem geprüften Wert übereinstimmen.
  • Im SDK läuft die Prüfung vor der Anfrage; ein Treffer schlägt mit BlockedError und dem Code recipient_blocked fehl.
  • Unter Sicherheit → Blockliste tragen Inhaber und Admins Blockierte Werte ein (einer pro Zeile, bis zu 1.000) und optional einen Zu prüfenden Parameter (z. B. email; Pfade mit Punkten funktionieren auch). Die API setzt die Liste bei jeder Anfrage durch – ob öffentlicher oder privater Schlüssel, auch bei veralteten Clients oder Skripten ohne SDK –, bevor ein Credit verbraucht wird. Sie prüft die gerenderten Empfänger (To/CC/BCC) und den Wert des zu prüfenden Parameters.

Die Liste im SDK ist im Quelltext Ihrer Seite sichtbar; sensible Einträge gehören daher nur in die Liste im Dashboard.

Die SDKs können außerdem verhindern, dass ein einzelner Browser zu oft sendet – etwa wenn ein Besucher doppelt auf den Absende-Button klickt:

init({ publicKey: 'pk_4f2a…', limitRate: { id: 'contact', throttle: 10_000 } });

Eine zweite Sendung innerhalb von 10 Sekunden von derselben Seite (oder mit derselben id) wird lokal mit BlockedError und dem Code rate_limited abgelehnt. Das ist eine Komfortfunktion, keine Sicherheitsmaßnahme – serverseitige Limits beschreibt Rate Limits.

Sicherheit → Schutz vor Missbrauch → Strikte Parameter lehnt Anfragen ab, die Parameter enthalten, die das Schema der Vorlage nicht definiert (siehe Parameter). Bots, die jedes Feld eines Formulars ausfüllen, auch erfundene, werden gestoppt, bevor sie Credits verbrauchen.