Preskočiť na obsah

Povolené domény

Povolené domény (allowlist domén) zabezpečia, že váš verejný kľúč funguje len na vašich vlastných weboch. Každá požiadavka s verejným kľúčom sa overí voči zoznamu podľa hlavičky Origin, ktorú posiela prehliadač (prípadne podľa Referer, keď Origin chýba). Požiadavky z iných domén sa odmietnu s chybou 403 origin_not_allowed a nespotrebujú žiadne kredity.

Povolené domény sú dostupné vo všetkých tarifoch vrátane Free.

Vlastník a administrátori pridávajú položky v Zabezpečenie → Povolené weby: napíšu doménu, kliknú na Pridať (vždy jednu položku, najviac 100) a nastavenie uložia. Položky sa porovnávajú s hostiteľom v origine požiadavky; na schéme (http/https) nezáleží.

Položka Zodpovedá
example.com https://example.com a http://example.com na ľubovoľnom porte – ale nie www.example.com
*.example.com ľubovoľná subdoména: www.example.com, shop.eu.example.com – ale nie samotné example.com
localhost lokálny vývoj na ľubovoľnom porte
localhost:3000 len tento port
127.0.0.1 lokálny vývoj cez IP adresu
my-app.pages.dev preview nasadenia u poskytovateľa hostingu

Ak potrebujete hlavnú doménu aj subdomény, pridajte example.com aj *.example.com.

Natívne aplikácie (React Native, Flutter, Swift, Kotlin) neposielajú Origin ani Referer, takže ich verejné API v predvolenom stave odmietne (rovnako ako EmailJS, ktoré požiadavky mimo prehliadača blokuje, kým ich nepovolíte). Ak chcete odosielať z aplikácie s verejným kľúčom, zapnite Zabezpečenie → Mobilné aplikácie → Povoliť mobilné aplikácie (predvolene vypnuté) a kliknite na Uložiť. Potom platí:

Požiadavka Mobilné aplikácie vypnuté, zoznam prázdny Mobilné aplikácie vypnuté, zoznam vyplnený Mobilné aplikácie zapnuté, zoznam prázdny Mobilné aplikácie zapnuté, zoznam vyplnený
Origin / Referer je v zozname prijatá prijatá prijatá prijatá
Origin / Referer nie je v zozname prijatá 403 origin_not_allowed prijatá 403 origin_not_allowed
bez Origin aj Referer (natívna aplikácia, server, curl) 403 origin_not_allowed 403 origin_not_allowed prijatá prijatá
Origin: null prijatá 403 origin_not_allowed prijatá 403 origin_not_allowed

Chyba pri požiadavke bez Origin má details.reason: "no_origin". Povolenie mobilných aplikácií zároveň určuje, akým kľúčom sa pri takých požiadavkách overuje CAPTCHA: zdieľaným mobilným widgetom Frontmailu len vtedy, keď je prepínač zapnutý (pozrite Turnstile).

Požiadavky s hlavičkou Origin alebo Referer sa podľa zoznamu kontrolujú vždy, takže zapnutie prepínača ochranu vašich webov neoslabí. Origin: null (iframy so sandboxom, stránky file://) sa za mobilnú aplikáciu nepovažuje. Turnstile je naďalej povinný pri každej šablóne, ktorá ho má zapnutý. Zmena sa zapíše do auditného záznamu ako security.updated.

Hlavičku Origin nastavuje sám prehliadač a skripty ju nemôžu podvrhnúť, takže allowlist zabráni iným webom vložiť váš kľúč. Skript bežiaci mimo prehliadača (curl, bot) však môže poslať akúkoľvek hlavičku Origin. Preto sú povolené domény len jednou z vrstiev ochrany spolu s Turnstile, rate limitmi a ochranou pred botmi.

Požiadavky so súkromným kľúčom kontrolu domény preskakujú – prichádzajú zo serverov, ktoré žiadny origin nemajú. Požiadavka so súkromným kľúčom, ktorá hlavičku Origin má, pochádza z webovej stránky, kde si kľúč prečíta každý návštevník; odmietneme ju chybou 403 private_key_in_browser, pokiaľ nezapnete Povoliť súkromné kľúče v prehliadačoch (pozrite Kľúče).

  • Lokálne to funguje, v produkcii nie: pridajte produkčnú doménu (aj variant s www.).
  • Nefunguje to v natívnej aplikácii alebo zo serverového skriptu (403 origin_not_allowed, details.reason: "no_origin"): pre aplikácie zapnite Povoliť mobilné aplikácie, na serveri použite súkromný kľúč.
  • Nefunguje to v mobilnom WebView alebo v rozšírení prehliadača: origin môže byť null, file:// alebo chrome-extension://…. Odosielajte radšej zo svojho backendu so súkromným kľúčom.
  • Nefunguje to s rozšírením na ochranu súkromia, ktoré odstraňuje Referer: moderné prehliadače pri požiadavkách POST posielajú Origin vždy, takže k tomu dochádza zriedka; skontrolujte požiadavku v DevTools.