Sezioni

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 state monouso 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_EMAILS vengono 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_SECRET univoco 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_SECRET solo 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_ORIGINS solo 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.