Dozwolone linki i blokada treści
Twój klucz publiczny jest widoczny w kodzie strony, więc każdy może go skopiować i wywoływać API bezpośrednio. W przypadku formularza kontaktowego to nie problem: e-mail zawsze trafia do ciebie. Inaczej jest, gdy szablon bierze odbiorcę z parametrów (potwierdzenie zapisu do newslettera, automatyczna odpowiedź, potwierdzenie zamówienia): każdy, kto ma klucz publiczny, mógłby wtedy wysłać twój szablon – z twojej domeny, z twoim logo – na dowolny adres i wstawić do niego własny tekst i linki. Tak właśnie działa phishing.
Dlatego we Frontmail obowiązuje zasada: dynamiczny odbiorca ⇒ zablokowana treść. Nadal możesz wysyłać do odbiorcy wybranego w przeglądarce, ale wywołujący nie zrobi z twojego szablonu phishingowego e-maila.
Kiedy treść jest zablokowana
Dział zatytułowany „Kiedy treść jest zablokowana”| Żądanie | Zablokowana |
|---|---|
| klucz publiczny + szablon, którego Do/DW/UDW korzysta z parametrów (włączone Zezwól na dynamicznego odbiorcę) | tak |
| automatyczna odpowiedź (zawsze trafia na adres z formularza) | tak – linki i pola nadawcy |
| klucz prywatny (twój serwer) | nie, chyba że szablon ma Zezwalaj tylko na linki do dozwolonych domen |
| klucz publiczny + szablon ze stałym odbiorcą (formularz kontaktowy) | nie – obowiązuje tylko reguła dla nadawcy |
Szablon, który ma włączone Zezwól na dynamicznego odbiorcę, ale w Do/DW/UDW stałe adresy, nie jest zablokowany.
Co musi spełnić zablokowane żądanie
Dział zatytułowany „Co musi spełnić zablokowane żądanie”- CAPTCHA jest obowiązkowa. Szablon musi mieć włączone Wymagaj CAPTCHA, w przeciwnym razie
żądanie kończy się błędem
403 dynamic_recipient_requires_captcha. CAPTCHA korzysta z twoich własnych kluczy Turnstile. Jeśli nie możesz użyć CAPTCHA, wysyłaj szablon ze swojego serwera kluczem prywatnym. - Stały nadawca. Adres nadawcy, nazwa nadawcy i Reply-To nie mogą korzystać z parametrów –
403 dynamic_field_not_allowed. - Żadnego HTML od wywołującego, krótkie teksty. Parametrów typu HTML nie da się wypełnić, a każda
wartość tekstowa ma najwyżej 500 znaków (parametry URL 2048; mniejsza Maks. długość parametru
nadal obowiązuje) –
422 invalid_template_paramszdetails.reason: "content_locked". - Linki tylko do dozwolonych domen – zobacz niżej –
403 link_not_allowed. - Limit na odbiorcę. Najwyżej 5 e-maili na adres odbiorcy dziennie (UTC), do ustawienia
w Bezpieczeństwo → E-maile na odbiorcę dziennie (1–1000). Po przekroczeniu limitu:
429 rate_limitedzdetails.scope: "recipient". Automatyczne odpowiedzi korzystają z tego samego licznika – po przekroczeniu limitu automatyczna odpowiedź nie powstaje.
Wszystkie sprawdzenia odbywają się zanim zostanie zużyty kredyt. W przypadku automatycznych
odpowiedzi nieudane sprawdzenie oznacza odpowiedź jako failed (z kodem błędu w
historii), kredyt jest zwracany i nic nie zostaje wysłane.
Dozwolone domeny linków
Dział zatytułowany „Dozwolone domeny linków”Link jest dozwolony, gdy jego domena jest:
- wpisana bezpośrednio w szablonie (HTML, wersja tekstowa lub temat) – a nie wstawiona przez
placeholder.
https://acme.pl/reset?token={{token}}dopuszczaacme.pl;{{reset_url}}anihttps://{{sub}}.acme.plnie dopuszczają niczego; - na liście dozwolonych domen (Bezpieczeństwo → Dozwolone domeny);
- w Bezpieczeństwo → Dozwolone domeny linków – jedna w wierszu,
example.com(dokładnie ten host) albo*.example.com(subdomeny, bez domeny głównej) – te same zasady co przy dozwolonych domenach; - własną domeną Frontmail (stopka Wysłano przez Frontmail w planie Free).
mailto:, tel: i wszystkie inne linki spoza sieci WWW (javascript:, data:, …) są dozwolone
tylko wtedy, gdy dokładnie ten sam link jest wpisany w szablonie.
Co jest sprawdzane
Dział zatytułowany „Co jest sprawdzane”Po wyrenderowaniu Frontmail zbiera każdy URL, który klient poczty mógłby otworzyć albo zamienić w link:
href,src,srcset,action,formaction,background,posteri inne atrybuty z URL-ami, także wewnątrz komentarzy warunkowych dla Outlooka;- CSS
url()i@importw atrybutachstylei w<style>oraz<meta http-equiv="refresh">; - URL-e i gołe domeny w tekście HTML, w wersji tekstowej i w temacie – klienty poczty same
zamieniają
evil.com/loginczywww.evil.comw linki, więc one też się liczą.
Przed porównaniem URL-e są normalizowane tak, jak odczytałaby je przeglądarka: dekodowane są encje
HTML i escape’y CSS, usuwane niewidoczne znaki, \ traktowany jak /, rozwiązywane //host bez
protokołu, odrzucana część z danymi logowania (https://acme.pl@evil.com to evil.com), dekodowane
kodowanie procentowe, usuwane wielkie litery i kropki na końcu, a domeny międzynarodowe porównywane
w punycode – podróbka аcme.pl z cyrylicką а nie pasuje do acme.pl (błąd oznacza ją
idn: true).
Błąd podaje w details.hosts tylko problematyczne domeny – nigdy pełne URL-e, które mogą
zawierać tokeny.
Ograniczenia
Dział zatytułowany „Ograniczenia”- Gołe domeny są rozpoznawane na podstawie listy znanych końcówek, które domenami nie są
(
report.pdf,index.htmlaniNode.jsto nie linki), więc tekst typuMr.Smithmoże zostać uznany za domenęmr.smith. Końcówki lubiane przez phisherów, które są też prawdziwymi domenami (.zip,.mov), liczą się zawsze. - Zwykłe adresy e-mail w tekście (
jan@example.com) nie są traktowane jak linki. - Sprawdzenie dotyczy tego, dokąd prowadzą linki, a nie tekstu wokół nich. W publicznych formularzach trzymaj teksty krótkie, a limit na odbiorcę niski.
Sprawdzanie linków w innych szablonach
Dział zatytułowany „Sprawdzanie linków w innych szablonach”Włącz Zezwalaj tylko na linki do dozwolonych domen w ustawieniach szablonu (Ustawienia → Ochrona), żeby sprawdzanie linków obejmowało każde żądanie, także wysyłki z kluczem prywatnym. W szablonach z galerii z dynamicznym odbiorcą jest to włączone domyślnie.
Adres nadawcy
Dział zatytułowany „Adres nadawcy”W każdym żądaniu z kluczem publicznym adres nadawcy w szablonie nie może pochodzić z parametrów
(inaczej 403 dynamic_field_not_allowed).
Formularz kontaktowy, który wstawia adres odwiedzającego do Reply-To, działa dalej – to właściwe
miejsce na niego. Edytor szablonów ostrzega o tym wszystkim w sekcji Kontrole.