Přeskočit na obsah

Povolené domény

Povolené domény (allowlist domén) zajistí, že váš public key funguje jen na vašich vlastních webech. Každý požadavek s public key se ověří proti seznamu podle hlavičky Origin, kterou posílá prohlížeč (případně podle Referer, když Origin chybí). Požadavky z jiných domén se odmítnou s chybou 403 origin_not_allowed a nespotřebují žádné kredity.

Povolené domény jsou dostupné na všech tarifech, včetně Free.

Vlastník a admini přidávají položky v Zabezpečení → Povolené weby: napíšou doménu, kliknou na Přidat (vždy jednu položku, nejvýš 100) a nastavení uloží. Položky se porovnávají s hostitelem v originu požadavku; na schématu (http/https) nezáleží.

Položka Odpovídá
example.com https://example.com a http://example.com na libovolném portu – ale ne www.example.com
*.example.com libovolná subdoména: www.example.com, shop.eu.example.com – ale ne samotné example.com
localhost lokální vývoj na libovolném portu
localhost:3000 jen daný port
127.0.0.1 lokální vývoj přes IP adresu
my-app.pages.dev preview nasazení u hostingového poskytovatele

Pokud potřebujete hlavní doménu i subdomény, přidejte example.com i *.example.com.

Nativní aplikace (React Native, Flutter, Swift, Kotlin) neposílají Origin ani Referer, takže je veřejné API ve výchozím stavu odmítne (stejně jako EmailJS, které požadavky mimo prohlížeč blokuje, dokud je nepovolíte). Pokud chcete odesílat z aplikace s public key, zapněte Zabezpečení → Mobilní aplikace → Povolit mobilní aplikace (ve výchozím stavu vypnuto) a klikněte na Uložit. Pak platí:

Požadavek Mobilní aplikace vypnuté, seznam prázdný Mobilní aplikace vypnuté, seznam vyplněný Mobilní aplikace zapnuté, seznam prázdný Mobilní aplikace zapnuté, seznam vyplněný
Origin / Referer je v seznamu přijat přijat přijat přijat
Origin / Referer není v seznamu přijat 403 origin_not_allowed přijat 403 origin_not_allowed
bez Origin i Referer (nativní aplikace, server, curl) 403 origin_not_allowed 403 origin_not_allowed přijat přijat
Origin: null přijat 403 origin_not_allowed přijat 403 origin_not_allowed

Chyba u požadavku bez Origin má details.reason: "no_origin". Povolení mobilních aplikací zároveň určuje, jakým klíčem se u takových požadavků ověřuje CAPTCHA: sdíleným mobilním widgetem Frontmailu jen tehdy, když je přepínač zapnutý (viz Turnstile).

Požadavky s hlavičkou Origin nebo Referer se podle seznamu kontrolují vždy, takže zapnutí přepínače ochranu vašich webů neoslabí. Origin: null (iframy se sandboxem, stránky file://) se za mobilní aplikaci nepovažuje. Turnstile je dál povinný u každé šablony, která ho má zapnutý. Změna se zapíše do audit logu jako security.updated.

Před čím chrání a před čím ne

Sekce “Před čím chrání a před čím ne”

Hlavičku Origin nastavuje sám prohlížeč a skripty ji nemohou podvrhnout, takže allowlist zabrání jiným webům ve vložení vašeho klíče. Skript běžící mimo prohlížeč (curl, bot) ale může poslat jakoukoli hlavičku Origin. Proto jsou povolené domény jen jednou z vrstev ochrany, spolu s Turnstile, rate limity a ochranou proti botům.

Požadavky s private key kontrolu domény přeskakují – přicházejí ze serverů, které žádný origin nemají. Požadavek s private key, který hlavičku Origin má, pochází z webové stránky, kde si klíč přečte každý návštěvník; odmítneme ho chybou 403 private_key_in_browser, pokud nezapnete Povolit privátní klíč v prohlížeči (viz Klíče).

  • Lokálně to funguje, v produkci ne: přidejte produkční doménu (i variantu s www.).
  • Nefunguje to v nativní aplikaci nebo ze serverového skriptu (403 origin_not_allowed, details.reason: "no_origin"): pro aplikace zapněte Povolit mobilní aplikace, na serveru použijte private key.
  • Nefunguje to v mobilním WebView nebo v rozšíření prohlížeče: origin může být null, file:// nebo chrome-extension://…. Odesílejte raději ze svého backendu s private key.
  • Nefunguje to s rozšířením na ochranu soukromí, které odstraňuje Referer: moderní prohlížeče u požadavků POST posílají Origin vždy, takže k tomu dochází zřídka; zkontrolujte požadavek v DevTools.