Note di sicurezza
Come Frontdoor protegge accesso, sessioni e dati, cosa devi configurare in modo sicuro e come segnalare una vulnerabilità.
In questa pagina
Frontdoor sta davanti alle tue applicazioni interne e ne gestisce l'autenticazione. Questa pagina riassume come le protegge e cosa spetta a te.
Accesso e sessioni
- Il flusso OAuth usa PKCE (S256) e uno
statemonouso conservato sul server per 10 minuti. Lo state è legato al browser che ha avviato l'accesso tramite un cookie httpOnly di breve durata (frontdoor_auth_nonce). Il code verifier non lascia mai il server. - I token di Microsoft vengono convalidati dalla libreria MSAL, con verifica della firma sulle chiavi pubbliche di Microsoft.
- Il token di sessione emesso da Frontdoor è conservato solo in un cookie httpOnly, non leggibile da JavaScript. Il profilo utente inviato al browser non contiene il token.
- Le persone elencate in
ADMIN_EMAILSvengono promosse a owner all'accesso e non possono essere declassate dall'interfaccia web.
Protezioni integrate
- Content Security Policy tramite Helmet, con un'eccezione form-action per singola risposta per i redirect SSO in POST.
- SQL parametrizzato ovunque, senza interpolazione di stringhe.
- Sanificazione: le icone SVG incollate e il testo formattato passano da DOMPurify; i tag HTML vengono rimossi dai campi di testo inseriti dagli utenti.
- Controllo delle richieste cross-site: le richieste che modificano dati con il cookie di sessione devono arrivare da Frontdoor o da un'origine in
CORS_ALLOWED_ORIGINS. - Limiti di frequenza su accesso, API, modifiche a gruppi e utenti, e sull'endpoint di introspezione dei token. I primi tre sono regolabili (vedi Riferimento della configurazione); il limite dell'introspezione è fisso a 120 richieste al minuto.
- Nessun dato personale nei log: email, nomi e token non vengono mai scritti nella console del server.
- Convalida all'avvio: Frontdoor si ferma all'avvio se manca un secret obbligatorio.
Cosa devi fare bene
- Usa un
JWT_SECRETunivoco e casuale di almeno 32 caratteri. - Ruota periodicamente il client secret di Entra e non inserirlo mai nel repository.
- Non esporre mai il Login Dev. Permette a chiunque di scegliere qualsiasi ruolo, e il profilo demo firma i token con un secret di riserva pubblico. In produzione (
NODE_ENV=production) è sempre disattivato. - Condividi
JWT_SECRETsolo con app di totale fiducia: un'app che lo possiede può verificare i token di Frontdoor, ma potrebbe anche firmarli. Per le altre usa l'introspezione dei token. Vedi Autenticazione delle app satellite. - Elenca in
CORS_ALLOWED_ORIGINSsolo le origini che devono davvero chiamare Frontdoor con le credenziali.
Segnalare una vulnerabilità
Non aprire una issue pubblica per una vulnerabilità di sicurezza. Usa la segnalazione privata delle vulnerabilità di GitHub sul repository di Frontdoor (Security → Report a vulnerability). Se questa opzione non è disponibile, contatta un maintainer tramite GitHub e chiedi un canale privato.
Includi:
- una descrizione del problema e dell'impatto che hai osservato
- i passi per riprodurlo, o una prova di concetto minima
- la versione o il commit interessato
- la tua valutazione della gravità, se ne hai una
| Fase | Obiettivo |
|---|---|
| Conferma di ricezione della segnalazione | entro 72 ore |
| Prima valutazione della gravità | entro 7 giorni |
| Correzione dei problemi critici | entro 30 giorni dalla conferma |
| Divulgazione pubblica coordinata | dopo il rilascio di una correzione, o di comune accordo |
È supportata solo l'ultima minor release della 1.x, quindi mantieni aggiornata la tua installazione (vedi Aggiornamento e rollback).
La ricerca in buona fede che segue questa policy non sarà perseguita legalmente: evita di degradare il servizio per gli altri, non accedere a dati che non sono tuoi e non modificarli, e lascia ai maintainer un tempo ragionevole per correggere il problema prima di divulgarlo.