Le applicazioni web possono essere di ogni genere e tipo, scritte con qualsiasi genere di linguaggio e girare su ogni tipo di sistema operativo comportandosi in modi immaginabili. Alla base di tutte le applicazioni web c'è il fatto che tutto il funzionamento viene comunicato tramite HTTP , e che tipicamente i risultati sono formattati in HTML.
In tutte le applicazioni web dobbiamo considerare un insieme di tecnologie, partendo dal sistema operativo fino ad arrivare al singolo script di codice.
In tutto questo percorso si possono avere dei problemi di sicurezza dovuti a svariate cause come ad esempio, un'errata configurazione del server web o un input nocivo da parte dell'utente.
I problemi più frequenti e più difficili da risolvere sono creati proprio dagli utenti in quanto, a differenza di un sistema gestito da noi gli utenti, possono creare imprecisati tipi di errori che risultano di complicata previsione e gestione.
Spesso è semplice testare le funzionalità di un'applicazione: basta seguire i passi che potrebbero seguire i normali utenti. Nei test funzionali, di solito lavoriamo su input attesi e accettabili che produrranno risultati noti e attesi.
Per i test della sicurezza non possiamo basarci su aspettative chiare e definite ma dobbiamo andare oltre: comprendendo l'ambito dei problemi e creando input nocivi.
Il testing della sicurezza per il web, quindi, prevede l'uso di strumenti manuali ed automatici per simulare e stimolare le attività dell'applicazione web da testare.
Proveremo input nocivi come gli attacchi di scripting cross-site, e useremo metodi manuali e script per inviarli all'applicazione. Useremo allo stesso modo input SQL nocivi, e li invieremo a loro volta.
Tra i valori limite considereremo aspetti quali casualità prevedibile e assegnazione sequenziale degli identificatori, per accertarci che gli attacchi comuni basati su di essi siano respinti.