Preskočiť na obsah

Povolené odkazy a zámok obsahu

Váš verejný kľúč je vidieť v kóde webu, takže si ho ktokoľvek môže skopírovať a volať API priamo. Pri kontaktnom formulári to nevadí: e-mail ide vždy vám. Inak je to pri šablónach, ktoré berú príjemcu z parametrov (potvrdenie odberu, automatická odpoveď, potvrdenie objednávky): kto má verejný kľúč, mohol by vašu šablónu poslať z vašej domény a s vaším logom na ľubovoľnú adresu a doplniť do nej vlastný text a odkazy. Presne tak vyzerá phishing.

Vo Frontmaile preto platí pravidlo: dynamický príjemca ⇒ uzamknutý obsah. Príjemcu zvoleného v prehliadači môžete používať ďalej, ale volajúci z vašej šablóny phishingový e-mail neurobí.

Požiadavka Uzamknuté
verejný kľúč + šablóna, ktorej Komu/Kópia/Skrytá kópia používa parametre (zapnuté Povoliť dynamického príjemcu) áno
automatická odpoveď (ide vždy na adresu z formulára) áno – odkazy a polia odosielateľa
súkromný kľúč (váš server) nie, pokiaľ šablóna nemá Povoliť len odkazy na povolené domény
verejný kľúč + šablóna s pevným príjemcom (kontaktný formulár) nie – platí len pravidlo pre odosielateľa

Šablóna, ktorá má Povoliť dynamického príjemcu zapnuté, ale v Komu/Kópia/Skrytá kópia pevné adresy, uzamknutá nie je.

  1. CAPTCHA je povinná. Šablóna musí mať zapnuté Vyžadovať CAPTCHA, inak požiadavka skončí chybou 403 dynamic_recipient_requires_captcha. CAPTCHA používa vaše vlastné kľúče Turnstile. Ak CAPTCHA použiť nemôžete, posielajte šablónu zo servera súkromným kľúčom.
  2. Pevný odosielateľ. Adresa odosielateľa, meno odosielateľa a Reply-To nesmú používať parametre – 403 dynamic_field_not_allowed.
  3. Žiadne HTML od volajúceho, krátke texty. Parametre typu HTML nemožno vyplniť a každá textová hodnota má najviac 500 znakov (URL parametre 2 048; menšia Max. dĺžka parametra platí ďalej) – 422 invalid_template_params s details.reason: "content_locked".
  4. Odkazy len na povolené domény – pozrite nižšie – 403 link_not_allowed.
  5. Limit na príjemcu. Najviac 5 e-mailov na adresu príjemcu za deň (UTC), nastaviteľné v Zabezpečenie → E-mailov na príjemcu za deň (1 – 1 000). Nad limit: 429 rate_limited s details.scope: "recipient". Automatické odpovede zdieľajú to isté počítadlo – nad limit sa automatická odpoveď nevytvorí.

Všetky kontroly prebehnú skôr, ako sa použije kredit. Pri automatickej odpovedi neúspešná kontrola označí odpoveď ako failed (s kódom chyby v histórii), kredit sa vráti a nič sa neodošle.

Odkaz je povolený, keď jeho doména je:

  • napísaná priamo v šablóne (HTML, textová verzia alebo predmet) – nevzniká z parametra. https://acme.sk/reset?token={{token}} povolí acme.sk; {{reset_url}} ani https://{{sub}}.acme.sk nepovolia nič;
  • v zozname povolených webov (Zabezpečenie → Povolené weby);
  • v Zabezpečenie → Povolené domény odkazov – jedna na riadok, example.com (presne tento host) alebo *.example.com (subdomény, nie samotná doména) – rovnaké pravidlá ako pri povolených weboch;
  • vlastná doména Frontmailu (pätička Odoslané cez Frontmail v tarife Free).

mailto:, tel: a akýkoľvek iný odkaz mimo webu (javascript:, data:, …) sú povolené len vtedy, keď je presne rovnaký odkaz napísaný v šablóne.

Po vyrenderovaní Frontmail pozbiera každú URL, ktorú môže poštový klient otvoriť alebo z nej urobiť odkaz:

  • atribúty href, src, srcset, action, formaction, background, poster a ďalšie, aj vnútri podmienených komentárov pre Outlook;
  • CSS url() a @import v atribútoch style a v <style> a <meta http-equiv="refresh">;
  • URL aj holé domény v texte HTML, v textovej verzii a v predmete – poštoví klienti z evil.com/login alebo www.evil.com urobia odkaz sami, preto sa počítajú tiež.

Pred porovnaním sa URL normalizujú tak, ako by ich čítal prehliadač: dekódujú sa HTML entity a CSS escape sekvencie, odstránia sa neviditeľné znaky, \ sa berie ako /, doplní sa protokol pri //host, zahodí sa prihlasovacia časť (https://acme.sk@evil.com je evil.com), dekóduje sa percentové kódovanie, odstránia sa veľké písmená a bodky na konci a medzinárodné domény sa porovnávajú v punycode – podvrh аcme.sk s cyrilským а sa s acme.sk nezhoduje (chyba ho označí idn: true).

Chyba uvádza v details.hosts len problémové domény – nikdy celé URL, ktoré môžu obsahovať tokeny.

  • Holé domény sa rozpoznávajú podľa zoznamu koncoviek, ktoré doménami nie sú (report.pdf, index.html ani Node.js odkazy nie sú), takže text ako Mr.Smith sa môže počítať ako doména mr.smith. Koncovky obľúbené pri phishingu, ktoré sú zároveň skutočnými doménami (.zip, .mov), sa počítajú vždy.
  • Bežné e-mailové adresy v texte (jana@example.com) sa za odkazy nepovažujú.
  • Kontrola stráži, kam odkazy vedú, nie text okolo nich. Pri verejných formulároch držte texty krátke a limit na príjemcu nízky.

Kontrola odkazov pri ďalších šablónach

Section titled “Kontrola odkazov pri ďalších šablónach”

V nastaveniach šablóny (Nastavenia → Ochrana) zapnite Povoliť len odkazy na povolené domény a kontrola odkazov sa použije na každú požiadavku, aj so súkromným kľúčom. Pri šablónach z galérie s dynamickým príjemcom je zapnutá automaticky.

Pri každej požiadavke s verejným kľúčom nesmie adresa odosielateľa v šablóne pochádzať z parametrov (inak 403 dynamic_field_not_allowed). Kontaktný formulár, ktorý dáva adresu návštevníka do Reply-To, funguje ďalej – tam patrí. Editor šablón na všetko upozorní v Kontrolách.