Prima di verificare nel dettaglio la procedura di test di un'applicazione web, verifichiamo le condizioni in cui si deve trovare l'applicativo e l'infrastruttura software che lo sorregge.
Database
Partiamo dalla fonte dati:
- La versione del sistema operativo della macchina ospite, i services pack e le patch DEVONO essere sempre aggiornate.
- La versione del database su cui lavoriamo DEVE essere sempre aggiornata (meglio se alla penultima versione stabile)!
- Le (eventuali) password della nostra applicazione vanno conservate nel db criptate con un buon algoritmo.
- Il progetto, lo sviluppo e l'implementazione della base dati dovrebbe essere svolto da persone competenti, fidate, e con uno sguardo alla sicurezza interna ed esterna.
- La gestione delle policy di accesso al db al di fuori dell'applicazione web che lo utilizzerà devono essere riservate al minor numero di persone possibile , e i permessi sulle istanze studiate nei minimi dettagli!
- Se è possibile utilizzare stored procedure per effettuare ogni operazione e creare viste sui dati che sono sempre preferibili agli accessi diretti sulle tabelle .
- Se possibile evitare l'utilizzo di nomi "urlanti" delle tabelle (va bene il nome parlante users per una tabella, ma se la tabella si chiamasse "user_solonome" o "users_password" o "users_password_inchiaro" voi quale cerchereste di attaccare?)
- Personalizzare ogni tipo di file, cartella e messaggio di default del db, per limitare la divulgazione di informazioni riguardo ai propri sistemi
- In caso di file di testo contenenti dati sensibili il consiglio è quello di proteggere bene l'accesso al disco sia dall'interno che dall'esterno
- Ovviamente la macchina che conterrà una qualunque fonte dati di produzione sarà blindata da e verso l'esterno (ma anche l'interno) con strettissime policy sul firewall (le porte e i servizi non indispensabili li chiudiamo!)
Application server
L'application server altro non è che un contenitore/ interprete del vostro applicativo che fornisce le funzionalità di accesso ai dati e altro alla vostra applicazione. Il suo compito è quello di ricevere le richieste dal web server, interrogare la fonte dati e restituire al web server una risposta.
Osservazioni:
- Valgono le stesse raccomandazioni di cui sopra per quanto riguarda il sistema operativo e la sua sicurezza.
- Mantenere sempre aggiornato l'application server all'ultima versione, patch o service pack.
- Molto importante: durante e dopo ogni migrazione verso una versione successiva verificare che i comportamenti della nostra applicazione non siano cambiati!
- Utilizzare prevalentemente le classi native e certificate per l'application server.
Web server
Il web server è la porta del nostro sistema verso il mondo (chi vorrebbe una porta con degli spifferi?)
Osservazioni:
- Valgono le stesse raccomandazioni di cui sopra per quanto riguarda il sistema operativo e la sua sicurezza.
- Attivare la maggior precisione possibile nei log, implementare procedure di analisi dei log a scadenze fisse.
- Utilizzare se possibile (anche di terze parti) software di controllo e validazione del flusso di dati che transita attraverso il web server
- Loggare e verificare sempre errori e alert! Abituiamoci a non ritenere poco importante nessun segnale "strano".
- Verificare e se necessario personalizzare o nascondere tutti i files, cartelle o informazioni di errore esposti dal web server per default. Può capitare che alcuni software (web server compreso) espongano funzionalità varie all'esterno.
Il ruolo del web server di gestire richieste e risposte, può essere integrato con altre funzionalità date da software di terze parti quali web proxy o web firewall. Un web proxy serve per intercettare i pacchetti e tracciare la navigazione, un web firewall per intercettare e bloccare pacchetti potenzialmente pericolosi.