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.
Nastavení
Sekce “Nastavení”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.
Mobilní aplikace
Sekce “Mobilní aplikace”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).
Řešení problémů
Sekce “Řešení problémů”- 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://nebochrome-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ůPOSTposílajíOriginvždy, takže k tomu dochází zřídka; zkontrolujte požadavek v DevTools.