Il go-live è il momento di massima esposizione. Ogni configurazione dimenticata, ogni header mancante, ogni credenziale esposta diventa una vulnerabilità reale. Questa checklist è il vostro gate di sicurezza prima della produzione.
Infrastruttura
Rete e accesso
- [ ] HTTPS obbligatorio su tutti gli endpoint (TLS 1.2+ minimo)
- [ ] Certificato SSL/TLS valido e con rinnovo automatico
- [ ] Firewall configurato (solo porte necessarie aperte)
- [ ] SSH con chiave pubblica (password disabilitata)
- [ ] VPN o IP whitelisting per accesso admin
- [ ] Rate limiting configurato sui reverse proxy
- [ ] DDoS protection attiva (Cloudflare o equivalente)
Server
- [ ] Sistema operativo aggiornato con patch di sicurezza
- [ ] Servizi non necessari disabilitati
- [ ] Utente non-root per l'applicazione
- [ ] Log centralizzati e protetti da manipolazione
- [ ] Monitoraggio uptime e risorse configurato
- [ ] Backup automatici testati e funzionanti
Docker / Container
- [ ] Immagini base aggiornate e scansionate per vulnerabilità
- [ ] Container eseguiti con utente non-root
- [ ] Nessun segreto hardcoded nelle immagini
- [ ] Health check configurati
- [ ] Limiti di risorse (CPU, memoria) impostati
- [ ] Network isolation tra container
Applicazione
Autenticazione
- [ ] Password con requisiti minimi (lunghezza ≥12, complessità)
- [ ] Hash delle password con bcrypt/argon2 (costo ≥10)
- [ ] MFA disponibile (obbligatorio per admin)
- [ ] Sessioni con scadenza ragionevole (15-30 min inattività)
- [ ] Invalidazione sessione al logout
- [ ] Protezione brute force (account lockout dopo N tentativi)
- [ ] Reset password sicuro (token monouso con scadenza)
Autorizzazione
- [ ] Principio del minimo privilegio applicato
- [ ] Controllo autorizzazione su ogni endpoint (non solo autenticazione)
- [ ] RBAC o ABAC implementato e testato
- [ ] Endpoint admin separati e protetti
- [ ] Nessun IDOR (Insecure Direct Object Reference)
Validazione input
- [ ] Validazione lato server su tutti gli input (Zod, Joi, ecc.)
- [ ] Sanitizzazione dell'output (prevenzione XSS)
- [ ] Query parametrizzate (prevenzione SQL injection)
- [ ] Upload file validati (tipo, dimensione, contenuto)
- [ ] Content-Type verificato su ogni richiesta
Header di sicurezza
- [ ]
Strict-Transport-Security(HSTS) - [ ]
Content-Security-Policy(CSP) - [ ]
X-Content-Type-Options: nosniff - [ ]
X-Frame-Options: DENY - [ ]
Referrer-Policy: strict-origin-when-cross-origin - [ ]
Permissions-Policyconfigurato - [ ]
X-XSS-Protection: 0(obsoleto ma non dannoso)
Cookie
- [ ] Flag
Securesu tutti i cookie - [ ] Flag
HttpOnlysui cookie di sessione - [ ]
SameSite=StrictoLaxconfigurato - [ ] Durata cookie proporzionata alla finalità
- [ ] Nessun dato sensibile nei cookie
Gestione errori
- [ ] Messaggi di errore generici per l'utente (nessun dettaglio tecnico)
- [ ] Stack trace disabilitati in produzione
- [ ] Errori loggati lato server con contesto sufficiente
- [ ] Pagine di errore personalizzate (404, 500)
- [ ] Nessuna informazione sul server negli header (
Server,X-Powered-Byrimossi)
Dati e segreti
Segreti
- [ ] Nessun segreto nel codice sorgente
- [ ] Variabili d'ambiente per credenziali
- [ ] File
.envin.gitignore - [ ] Segreti ruotati rispetto allo sviluppo
- [ ] Chiavi API con permessi minimi
- [ ] Nessun segreto nei log
Database
- [ ] Credenziali database dedicate per l'applicazione (non root)
- [ ] Connessione database crittografata (SSL)
- [ ] Query parametrizzate ovunque
- [ ] Backup automatico con retention policy
- [ ] Dati sensibili crittografati a riposo
- [ ] Accesso database non esposto pubblicamente
GDPR / Privacy
- [ ] Informativa privacy aggiornata e accessibile
- [ ] Banner cookie conforme (Garante Privacy)
- [ ] Registro dei trattamenti aggiornato
- [ ] DPA firmati con tutti i fornitori che trattano dati
- [ ] Procedura per esercizio diritti degli interessati
- [ ] Log degli accessi ai dati personali
API
- [ ] Autenticazione su tutti gli endpoint non pubblici
- [ ] Rate limiting per endpoint
- [ ] CORS configurato con origini specifiche
- [ ] Validazione input su ogni endpoint
- [ ] Paginazione con limiti massimi
- [ ] Versioning dell'API
- [ ] Documentazione OpenAPI aggiornata
Monitoraggio e risposta
Logging
- [ ] Log strutturati (JSON)
- [ ] Nessun dato personale nei log (PII)
- [ ] Nessuna password o token nei log
- [ ] Retention dei log definita
- [ ] Log centralizzati e ricercabili
Alerting
- [ ] Allarme su errori 500 anomali
- [ ] Allarme su tentativi di accesso falliti massivi
- [ ] Allarme su certificato SSL in scadenza
- [ ] Allarme su utilizzo risorse anomalo
- [ ] Procedura di risposta agli incidenti documentata
Scansione
- [ ] Scansione vulnerabilità automatizzata (dipendenze)
- [ ] Scansione header di sicurezza
- [ ] Test di penetrazione effettuato
- [ ] OWASP Top 10 verificato
Pipeline CI/CD
- [ ] Scansione dei segreti nel codice (pre-commit hook)
- [ ] Analisi statica del codice (SAST)
- [ ] Scansione delle dipendenze (SCA)
- [ ] Test di sicurezza automatizzati nella pipeline
- [ ] Deploy automatizzato con rollback
- [ ] Nessun accesso manuale al server di produzione
Processo di validazione
Prima del go-live, fate passare questa checklist con:
- Lo sviluppatore verifica l'applicazione
- Il DevOps verifica l'infrastruttura
- Un revisore indipendente effettua una review
- Una scansione automatizzata conferma i controlli tecnici
Solo quando tutti e quattro hanno validato, il go-live è autorizzato.
Scansiona il tuo sito web gratis con WarDek — OWASP, NIS2, GDPR, AI Act in un'unica scansione.