Erlaubte Links & Inhaltssperre
Ihr öffentlicher Schlüssel steht im Code Ihrer Website – jeder kann ihn kopieren und die API direkt aufrufen. Bei einem Kontaktformular ist das kein Problem: Die E-Mail geht immer an Sie. Anders ist es, wenn eine Vorlage ihren Empfänger aus Parametern übernimmt (eine Newsletter-Bestätigung, eine automatische Antwort, eine Bestellbestätigung): Wer den öffentlichen Schlüssel hat, könnte Ihre Vorlage dann – von Ihrer Domain, mit Ihrem Branding – an jede beliebige Adresse senden und Text und Links selbst befüllen. Genau so funktioniert Phishing.
Die Regel von Frontmail lautet daher: dynamischer Empfänger ⇒ gesperrter Inhalt. Sie können weiterhin an einen im Browser gewählten Empfänger senden, aber der Aufrufer kann Ihre Vorlage nicht in eine Phishing-E-Mail verwandeln.
Wann der Inhalt gesperrt ist
Abschnitt betitelt „Wann der Inhalt gesperrt ist“| Anfrage | Gesperrt |
|---|---|
| öffentlicher Schlüssel + Vorlage, deren To/CC/BCC Parameter verwenden (Dynamischen Empfänger erlauben an) | ja |
| automatische Antwort (geht immer an die Adresse aus dem Formular) | ja – Links und Absenderfelder |
| privater Schlüssel (Ihr Server) | nein, außer die Vorlage hat Nur Links auf erlaubte Domains zulassen |
| öffentlicher Schlüssel + Vorlage mit festem Empfänger (Kontaktformular) | nein – es gilt nur die Regel für den Absender |
Eine Vorlage mit eingeschaltetem Dynamischen Empfänger erlauben, aber festen Adressen in To/CC/BCC ist nicht gesperrt.
Was eine gesperrte Anfrage erfüllen muss
Abschnitt betitelt „Was eine gesperrte Anfrage erfüllen muss“- CAPTCHA ist Pflicht. Die Vorlage muss CAPTCHA verlangen eingeschaltet haben, sonst
schlägt die Anfrage mit
403 dynamic_recipient_requires_captchafehl. Das CAPTCHA verwendet Ihre eigenen Turnstile-Schlüssel. Können Sie kein CAPTCHA verwenden, senden Sie die Vorlage von Ihrem Server mit einem privaten Schlüssel. - Fester Absender. Absenderadresse, Absendername und Reply-To dürfen keine Parameter verwenden –
403 dynamic_field_not_allowed. - Kein Markup vom Aufrufer, kurze Texte. Parameter vom Typ HTML können nicht befüllt werden, und
jeder Textwert hat höchstens 500 Zeichen (URL-Parameter 2.048; eine kleinere Max. Länge am
Parameter gilt weiterhin) –
422 invalid_template_paramsmitdetails.reason: "content_locked". - Links nur auf erlaubte Domains – siehe unten –
403 link_not_allowed. - Limit pro Empfänger. Höchstens 5 E-Mails pro Empfängeradresse und Tag (UTC), einstellbar
unter Sicherheit → E-Mails pro Empfänger und Tag (1–1.000). Über dem Limit:
429 rate_limitedmitdetails.scope: "recipient". Automatische Antworten teilen sich den Zähler – über dem Limit wird keine automatische Antwort erstellt.
Jede Prüfung läuft, bevor ein Credit verbraucht wird. Bei automatischen Antworten markiert eine
fehlgeschlagene Prüfung die automatische Antwort als failed (mit dem Fehlercode im
Verlauf), der Credit wird erstattet und nichts wird gesendet.
Erlaubte Link-Domains
Abschnitt betitelt „Erlaubte Link-Domains“Ein Link ist erlaubt, wenn seine Domain
- direkt in der Vorlage steht (HTML, Textversion oder Betreff) – und nicht von einem Platzhalter
erzeugt wird.
https://acme.com/reset?token={{token}}erlaubtacme.com;{{reset_url}}oderhttps://{{sub}}.acme.comerlauben nichts; - auf Ihrer Liste der erlaubten Domains steht (Sicherheit → Erlaubte Websites);
- unter Sicherheit → Erlaubte Link-Domains eingetragen ist – eine pro Zeile,
example.com(genau dieser Host) oder*.example.com(Subdomains, nicht die Hauptdomain) – nach denselben Regeln wie bei den erlaubten Domains; - die eigene Domain von Frontmail ist (die Fußzeile Gesendet mit Frontmail im Free-Tarif).
mailto:, tel: und alle anderen Nicht-Web-Links (javascript:, data:, …) sind nur erlaubt,
wenn genau derselbe Link in der Vorlage steht.
Was geprüft wird
Abschnitt betitelt „Was geprüft wird“Nach dem Rendern sammelt Frontmail jede URL, die ein Mailprogramm öffnen oder in einen Link verwandeln könnte:
href,src,srcset,action,formaction,background,posterund andere URL-Attribute, auch innerhalb bedingter Kommentare für Outlook;- CSS
url()und@importinstyle-Attributen und in<style>sowie<meta http-equiv="refresh">; - URLs und bloße Domains im HTML-Text, in der Textversion und im Betreff – Mailprogramme
verlinken
evil.com/loginoderwww.evil.comautomatisch, daher zählen auch sie als Links.
Vor dem Vergleich werden URLs so normalisiert, wie ein Browser sie lesen würde: HTML-Entities und
CSS-Escapes werden dekodiert, unsichtbare Zeichen entfernt, \ wird als / behandelt,
protokollrelative //host werden aufgelöst, Benutzerangaben verworfen (https://acme.com@evil.com
ist evil.com), Prozentkodierung dekodiert, Großbuchstaben und abschließende Punkte entfernt, und
internationalisierte Domains werden in Punycode verglichen – ein Doppelgänger wie аcme.com mit
kyrillischem а passt nicht auf acme.com (der Fehler kennzeichnet ihn mit idn: true).
Der Fehler listet in details.hosts nur die beanstandeten Domains auf – niemals vollständige
URLs, die Tokens enthalten könnten.
Grenzen
Abschnitt betitelt „Grenzen“- Bloße Domains werden anhand einer Liste bekannter Endungen erkannt, die keine Domains sind
(
report.pdf,index.htmlundNode.jssind keine Links); ein Text wieMr.Smithkann daher als Domainmr.smithzählen. Bei Phishing beliebte Endungen, die zugleich echte Domains sind (.zip,.mov), zählen immer. - Einfache E-Mail-Adressen im Text (
jane@example.com) werden nicht als Links behandelt. - Die Prüfung betrifft, wohin Links führen, nicht den Text um sie herum. Halten Sie Texte kurz und Ihr Empfängerlimit für öffentliche Formulare niedrig.
Links bei anderen Vorlagen prüfen
Abschnitt betitelt „Links bei anderen Vorlagen prüfen“Schalten Sie in den Vorlageneinstellungen (Einstellungen → Schutz) Nur Links auf erlaubte Domains zulassen ein, um die Linkprüfung auf jede Anfrage anzuwenden, auch auf Sendungen mit privatem Schlüssel. Bei Galerievorlagen mit dynamischem Empfänger ist die Option standardmäßig eingeschaltet.
Absenderadresse
Abschnitt betitelt „Absenderadresse“Bei jeder Anfrage mit öffentlichem Schlüssel darf die Absenderadresse der Vorlage nicht aus
Parametern stammen (sonst
403 dynamic_field_not_allowed). Ein
Kontaktformular, das die Adresse des Besuchers in Reply-To einsetzt, funktioniert weiterhin –
genau dort gehört sie hin. Der Vorlageneditor warnt unter Prüfungen vor all dem.