Du kannst Spam ohne CAPTCHA für jeden Besucher reduzieren. Beginne mit Honeypot, serverseitiger Validierung und Ratenlimits. Jeder Schutz löst ein anderes Problem. Keiner erkennt sicher, ob ein gut formulierter Text von einem Kunden oder Spammer kommt.
Diese Anleitung zeigt den HTML-Honeypot, die Prüfungen hinter dem Endpunkt und den Funktionstest. Wenn du noch einen Empfangsweg suchst, starte mit unserer Anleitung zu Kontaktformulare für statische Websites.
Was ein Honeypot-Feld wirklich tut
Ein Honeypot ist ein Textfeld, das normale Besucher leer lassen sollen. Es liegt außerhalb des sichtbaren Formulars und der normalen Tab-Reihenfolge. Ein Bot, der wahllos Felder ausfüllt, füllt womöglich auch dieses aus. Der empfangende Server verwirft dann die Einsendung.
Das verborgene Feld allein tut nichts. Dein Backend muss es vor Speicherung oder Benachrichtigung erkennen und prüfen. Bei Mailcontact heißt das unterstützte Feld company_website. Ist der Wert nach Entfernen äußerer Leerzeichen nicht leer, liefert der Endpunkt die übliche Erfolgsantwort, speichert aber keine Nachricht. Diese verworfene Einsendung verbraucht dein monatliches Nachrichtenkontingent nicht.
Honeypot zu deinem HTML-Kontaktformular hinzufügen
Bei der empfohlenen Einbindung gehostetes MailContact-Skript laden: Es fügt die Prüfung bei der Initialisierung ein und übernimmt Versand und automatische Verifizierung. Das manuelle Beispiel unten ist für native Formulare und direkte API-Integrationen gedacht.
Füge das in dein Formular mit den E-Mail- und Nachrichtenfeldern ein. Verwende eine Klasse nur für dieses Kontaktformular, damit andere Styles das Eingabefeld nicht versehentlich sichtbar machen.
<!-- Add inside your existing contact form. -->
<div class="contact-meta" aria-hidden="true">
<label for="contact-website">Website</label>
<input id="contact-website" type="text" name="company_website"
tabindex="-1" autocomplete="off" />
</div>
<style>
.contact-meta {
position: absolute;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
</style>Das CSS verschiebt das Eingabefeld aus dem sichtbaren Bereich. tabindex="-1" entfernt es aus der normalen Tab-Navigation, und aria-hidden verbirgt den Container vor assistiven Technologien. autocomplete="off" bittet den Browser, es nicht auszufüllen. Markiere dieses Feld nicht als erforderlich: Eine legitime Einsendung muss es leer lassen.
Betrachte diese Attribute als Teil der Implementierung und teste sie. Autofill, Passwortmanager und CSS können unerwartet mit Feldern interagieren. Füllt sich die Falle bei normalem Besuch, sieht der Besucher womöglich Erfolg, obwohl die Einsendung verworfen wurde. Das ist ein vor Veröffentlichung zu behebender Fehlalarm, kein Beweis für guten Spamschutz.
Honeypot bei JavaScript-Einsendungen mitsenden
new FormData(form) enthält das benannte Eingabefeld automatisch. Wenn du JSON selbst zusammensetzt, füge company_website mit den anderen Feldern. Ohne es folgt ein FORM_CHECK_MISSING Fehler. Das gehostete Skript fügt das Feld automatisch ein. Eigene SDK-Formulare können MailContact.prepare(form) einmal vor der Interaktion. Unser vollständiges fetch-Kontaktformular nutzt FormData und enthält dieses Feld.
Eine Prüfung nur im Browser-JavaScript lässt sich durch eine direkte Endpunkt-Anfrage leicht umgehen. Validierung gehört auf den Server und in die Oberfläche; MDN-Anleitung zur Formularvalidierung erklärt, warum Browservalidierung hilfreiches Feedback liefert, aber keine Sicherheit durchsetzt.
Kombiniere die Falle mit Validierung und Ratenlimits
Ein Honeypot erkennt ein Muster automatisierten Verhaltens. Er begrenzt weder Anfragen noch Datenmenge. Mailcontact prüft jede Formularanfrage zusätzlich:
- Pflichtfelder: Eine syntaktisch gültige E-Mail-Adresse und eine nicht leere Nachricht. Das gültige Format beweist nicht, dass die Adresse dem Absender gehört.
- Feldgrenzen: bis zu 200 Zeichen für Name, 300 für Betreff, 320 für E-Mail und 5.000 für Nachricht.
- Anfragegröße: Anfrageinhalte über 64 KB werden abgelehnt.
- Anfragefrequenz: 20 Formularanfragen pro Minute und IP sowie höchstens 60 angenommene Nachrichten pro Minute und Postfach.
Ratenlimits sind von Tarifkontingenten getrennt. Free erlaubt 50 angenommene Formulareinsendungen pro Monat, Pro 1.000 eingehende Nachrichten im gesamten Konto. Ungültige Anfragen und verworfene Honeypot-Einsendungen verbrauchen kein Kontingent. Spam, der die Prüfungen passiert und angenommen wird, zählt. Siehe die Spamschutz-Referenz für die aktuellen Regeln.
Besucherweg und Bot-Falle testen
- Normal absenden: Lass die Falle leer und sende eine Nachricht über dein echtes Formular. Prüfe, ob sie im Postfach ankommt.
- Tastatur nutzen: Navigiere mit Tab und prüfe, dass das verborgene Feld nie normal fokussiert wird.
- Autofill testen: Lass den Browser sichtbare Kontaktfelder ausfüllen und prüfe danach den Honeypot. Er sollte weiter leer sein.
- Fülle die Falle absichtlich aus: Sende in einem kontrollierten Test einen nicht leeren
company_websiteWert. Der Endpunkt sollte Erfolg liefern, ohne neue Postfachnachricht oder Benachrichtigung. - Prüffeld entfernen: Der Versand muss fehlschlagen mit
FORM_CHECK_MISSINGwährend der Entwurf erhalten bleibt. - Abgelehnte Anfrage testen: Eine leere Nachricht sollte einen Validierungsfehler auslösen. Die Seite sollte den eingegebenen Text bewahren.
Teste auch nach Änderungen an Builder, CSS oder Versandcode. Ein Redesign kann den Honeypot aus den gesendeten Daten entfernen, obwohl er noch in der Seite steht. Eine reine Layoutprüfung erkennt das nicht.
Wenn Spam trotzdem durchkommt
Bots können den Honeypot leer lassen, plausibel wirkende Felder nutzen und unter Ratenlimits bleiben. Menschliche Spammer ebenso. MailContact kombiniert daher Scannerbewertungen mit lokalen Inhaltsprüfungen und projektbezogener Kampagnenerkennung. Verdächtige Nachrichten können einen automatischen Arbeitsnachweis erfordern. Deutlicher Spam wird 30 Tage ohne Benachrichtigung oder Kontingentverbrauch in Spam zurückgehalten. Das gehostete Skript übernimmt die Prüfung und bewahrt fehlgeschlagene Entwürfe. Der Arbeitsnachweis verteuert Automatisierung, beweist aber nicht, dass jemand ein Mensch ist. Prüfe Spam auf Fehlalarme und stelle legitime Nachrichten wieder her.
Bewahre einige Beispiele unerwünschter Nachrichten auf und notiere das betroffene Projekt. Kontaktiere uns mit diesem Kontext, wenn bestehende Regeln nicht zu deinem Verkehr passen. Bots, die öffentliche Adressen sammeln, sind ein anderes Problem. Dazu die Anleitung zu deine private E-Mail-Adresse nicht auf der Website veröffentlichen zeigt die verfügbaren Kontaktmöglichkeiten.