Přeskočit na obsah

Povolené odkazy a zámek obsahu

Váš veřejný klíč je vidět v kódu webu, takže si ho kdokoli může zkopírovat a volat API přímo. U kontaktního formuláře to nevadí: e-mail jde vždycky vám. Jinak je to u šablon, které berou příjemce z parametrů (potvrzení odběru, automatická odpověď, potvrzení objednávky): kdo má veřejný klíč, mohl by vaši šablonu poslat z vaší domény a s vaším logem na libovolnou adresu a doplnit do ní vlastní text a odkazy. Přesně tak vypadá phishing.

Frontmail proto platí pravidlo: dynamický příjemce ⇒ uzamčený obsah. Příjemce zvolený v prohlížeči dál můžete použít, ale volající z vaší šablony phishingový e-mail neudělá.

Požadavek Uzamčeno
veřejný klíč + šablona, jejíž Komu/Kopie/Skrytá kopie používá parametry (zapnutý Dynamický příjemce) ano
automatická odpověď (jde vždy na adresu z formuláře) ano – odkazy a pole odesílatele
privátní klíč (váš server) ne, pokud šablona nemá Povolit jen odkazy na povolené domény
veřejný klíč + šablona s pevným příjemcem (kontaktní formulář) ne – platí jen pravidlo pro odesílatele

Šablona, která má Dynamického příjemce zapnutého, ale v Komu/Kopie/Skrytá kopie pevné adresy, uzamčená není.

Co musí uzamčený požadavek splnit

Sekce “Co musí uzamčený požadavek splnit”
  1. CAPTCHA je povinná. Šablona musí mít zapnuté Vyžadovat CAPTCHA, jinak požadavek skončí chybou 403 dynamic_recipient_requires_captcha. CAPTCHA používá vaše vlastní klíče Turnstile. Pokud CAPTCHA použít nemůžete, posílejte šablonu ze serveru privátním klíčem.
  2. Pevný odesílatel. Adresa odesílatele, jméno odesílatele a Reply-To nesmí používat parametry – 403 dynamic_field_not_allowed.
  3. Žádné HTML od volajícího, krátké texty. Parametry typu HTML nejde vyplnit a každá textová hodnota má nejvýš 500 znaků (URL parametry 2 048; menší Max. délka parametru platí dál) – 422 invalid_template_params s details.reason: "content_locked".
  4. Odkazy jen na povolené domény – viz níže – 403 link_not_allowed.
  5. Limit na příjemce. Nejvýš 5 e-mailů na adresu příjemce za den (UTC), nastavitelné v Zabezpečení → E-mailů na příjemce za den (1–1 000). Nad limit: 429 rate_limited s details.scope: "recipient". Automatické odpovědi sdílejí stejné počítadlo – nad limit se automatická odpověď nevytvoří.

Všechny kontroly proběhnou dřív, než se použije kredit. U automatické odpovědi neúspěšná kontrola označí odpověď jako failed (s kódem chyby v historii), kredit se vrátí a nic se neodešle.

Povolené domény odkazů

Sekce “Povolené domény odkazů”

Odkaz je povolený, když jeho doména je:

  • napsaná přímo v šabloně (HTML, textová verze nebo předmět) – nevzniká z parametru. https://acme.cz/reset?token={{token}} povolí acme.cz; {{reset_url}} ani https://{{sub}}.acme.cz nepovolí nic;
  • v seznamu povolených domén webů (Zabezpečení → Povolené weby);
  • v Zabezpečení → Povolené domény odkazů – jedna na řádek, example.com (přesně tento host) nebo *.example.com (subdomény, ne samotná doména) – stejná pravidla jako u povolených webů;
  • vlastní doména Frontmailu (patička Odesláno přes Frontmail v tarifu Free).

mailto:, tel: a jakýkoli jiný odkaz mimo web (javascript:, data:, …) jsou povolené jen tehdy, když je přesně stejný odkaz napsaný v šabloně.

Po vykreslení Frontmail posbírá každou URL, kterou může poštovní klient otevřít nebo z ní udělat odkaz:

  • atributy href, src, srcset, action, formaction, background, poster a další, i uvnitř podmíněných komentářů pro Outlook;
  • CSS url() a @import v atributech style a v <style> a <meta http-equiv="refresh">;
  • URL i holé domény v textu HTML, v textové verzi a v předmětu – poštovní klienti z evil.com/login nebo www.evil.com udělají odkaz sami, proto se počítají taky.

Před porovnáním se URL normalizují tak, jak by je četl prohlížeč: dekódují se HTML entity a CSS escapy, odstraní neviditelné znaky, \ se bere jako /, doplní se protokol u //host, zahodí se přihlašovací část (https://acme.cz@evil.com je evil.com), dekóduje se procentové kódování, odstraní velká písmena a tečky na konci a mezinárodní domény se porovnávají v punycode – podvrh аcme.cz s cyrilským а se s acme.cz neshoduje (chyba ho označí idn: true).

Chyba uvádí v details.hosts jen problémové domény – nikdy celé URL, které můžou obsahovat tokeny.

  • Holé domény se poznávají podle seznamu koncovek, které doménami nejsou (report.pdf, index.html ani Node.js odkazy nejsou), takže text jako Mr.Smith se může počítat jako doména mr.smith. Koncovky oblíbené u phishingu, které jsou zároveň skutečnými doménami (.zip, .mov), se počítají vždy.
  • Běžné e-mailové adresy v textu (jana@example.com) se za odkazy nepovažují.
  • Kontrola hlídá, kam odkazy vedou, ne text kolem nich. U veřejných formulářů držte texty krátké a limit na příjemce nízký.

Kontrola odkazů u dalších šablon

Sekce “Kontrola odkazů u dalších šablon”

V nastavení šablony (Nastavení → Ochrana) zapněte Povolit jen odkazy na povolené domény a kontrola odkazů se použije na každý požadavek, i s privátním klíčem. U šablon z galerie s dynamickým příjemcem je zapnutá automaticky.

U každého požadavku s veřejným klíčem nesmí adresa odesílatele v šabloně pocházet z parametrů (jinak 403 dynamic_field_not_allowed). Kontaktní formulář, který dává adresu návštěvníka do Reply-To, funguje dál – tam patří. Editor šablon na všechno upozorní v Kontrolách.