Link copiato negli appunti
Di seguito vediamo alcune domande utili per sviluppare o valutare la sicurezza di una applicazione web:
Validazione dell'input
- L'input è validato e bonificato in ogni vettore di ingresso?
- È possibile iniettare codice nocivo?
- Può l'input venire manipolato durante il passaggio tra le componenti del sistema software?
- I dati provenienti dal server possono essere manipolati o falsificati?
Autenticazione
- I dati di autenticazione sono trasmessi attraverso i sistemi sicuri?
- Le password sono abbastanza robuste?
- Le password sono conservate in maniera corretta nel database?
- La crittografia applicata alla trasmissione dei dati è abbastanza robusta?
Autorizzazione
- Vengono presidiati i punti di ingresso alle aree protette?
- La gestione dell'autorizzazione è estesa al database?
- Le risorse sono vincolate da una policy utente/permesso sufficientemente ragionata?
Configurazione dell'amministrazione
- I permessi degli utenti sono limitati al lavoro che devono svolgere?
- È gestita la "scalata" degli utenti a permessi maggiori o diversi?
- È previsto un workflow di controllo per l'accesso ad alcuni settori o contenuti critici dell'applicazione?
Gestione delle sessioni
- Come viene gestita la sessione utente?
- È sufficientemente difficile e improbabile "rubare" la sessione ad un utente?
- Le sessioni scadono dopo un periodo prefissato?
- È altamente improbabile ottenere per n(>= 2) volte gli stessi id di sessione?
- È stato implementato un meccanismo di verifica della presenza in contemporanea dello stesso utente su due sessioni di lavoro differenti?
Parametri
- È prevista una sicurezza sulla manipolazione di parametri (esempio un doppio controllo)?
- I parametri (querysrting, form, header Http ) vengono filtrati ed eventualmente bonificati?
Errori
- Gli errori vengono gestiti per non divulgare informazioni sulle componenti della struttura applicativa?
Loggin, tracing alert:
- Esiste un sistema di logging dell'applicazione?
- Esiste un sistema di tracciamento delle sessioni?
- Esiste un sistema di avviso di condizioni anomale/d'errore (e-mail, sms)?