Salta ai contenuti

blockHeadless e lista dei bloccati

Oltre ai domini consentiti e a Turnstile, Frontmail ha due filtri leggeri che puoi attivare nell’SDK, nella dashboard o in entrambi. Le impostazioni della dashboard si trovano nella pagina Sicurezza (possono modificarle proprietari e admin).

Rifiuta gli invii dai browser automatizzati headless (Puppeteer, Playwright, Selenium e simili), spesso usati dai bot che fanno spam nei moduli.

init({ publicKey: 'pk_4f2a…', blockHeadless: true });
  • Nell’SDK il controllo viene eseguito nel browser prima di qualsiasi richiesta: send() viene rifiutato con un BlockedError con codice headless_blocked. Nessuna richiesta, nessun credito.
  • In Sicurezza → Protezione dagli abusi → Blocca i browser headless anche l’API rifiuta le richieste con chiave pubblica il cui user agent identifica un browser headless o automatizzato (HeadlessChrome, Puppeteer, Playwright, Selenium, PhantomJS, jsdom …). Usali entrambi.

Gli utenti legittimi non ne risentono. I tuoi test end-to-end sì: nei test invia con una chiave privata oppure disattiva l’opzione negli ambienti di test.

La lista dei bloccati rifiuta gli invii il cui destinatario – o il valore di un parametro scelto – corrisponde a una voce. Usi tipici: l’indirizzo di uno spammer insistente, domini di email usa e getta, un concorrente che fa scraping dei tuoi moduli.

init({
publicKey: 'pk_4f2a…',
blockList: {
list: ['spam@example.net', 'mailinator.com'],
watchVariable: 'email', // parametro o campo del modulo da controllare
},
});
  • I valori vengono confrontati senza distinzione tra maiuscole e minuscole, dopo aver rimosso gli spazi iniziali e finali. Una voce senza @ (o che inizia con @, come @mailinator.com) corrisponde a tutti gli indirizzi di quel dominio; le altre voci corrispondono esattamente a un indirizzo email o al valore controllato.
  • Nell’SDK il controllo viene eseguito prima della richiesta; una corrispondenza viene rifiutata con BlockedError con codice recipient_blocked.
  • In Sicurezza → Lista dei bloccati proprietari e admin inseriscono i Valori bloccati (uno per riga, fino a 1.000) e, facoltativamente, un Parametro da controllare (ad es. email; funzionano anche i percorsi con il punto). L’API applica la lista a ogni richiesta – con chiave pubblica o privata, inclusi client non aggiornati o script che non usano l’SDK – prima che venga consumato un credito. Controlla i destinatari renderizzati (A/CC/CCN) e il valore del parametro da controllare.

La lista dell’SDK è visibile nel sorgente della pagina; tieni le voci sensibili solo nella lista della dashboard.

Gli SDK possono anche impedire a un singolo browser di inviare troppo spesso – per esempio a un visitatore che fa doppio clic sul pulsante di invio:

init({ publicKey: 'pk_4f2a…', limitRate: { id: 'contact', throttle: 10_000 } });

Un secondo invio entro 10 secondi dalla stessa pagina (o con lo stesso id) viene rifiutato localmente con BlockedError con codice rate_limited. È una comodità, non una misura di sicurezza: per i limiti lato server vedi Rate limit.

Sicurezza → Protezione dagli abusi → Parametri rigorosi rifiuta le richieste che contengono parametri non definiti dallo schema del modello (vedi Parametri). I bot che compilano tutti i campi di un modulo, anche quelli inventati, vengono fermati prima di consumare crediti.