Il World Wide Web era un contenitore di documenti statici visualizzabili da un Web Browser. Documenti statici venivano resi disponibili da un web server che rispondeva alla richiesta di un client (tramite la chiamata ad un Url da parte di un web browser).
Digitando un Url (per esempio www.miosito.com/index.html) sul nostro web browser, il web server verificava la presenza del file richiesto (index.html) e ,se lo trovava, inviava la risposta al client permettendo la lettura del file.
Questo tipo di struttura aveva il difetto di necessitare di un intervento tecnico diretto sul server ad ogni aggiornamento dei dati.
Inoltre la gestione di autorizzazione e autenticazione degli utenti imponeva lo sviluppo di soluzioni (per esempio script cgi o filtri isapi) che non erano alla portata di tutti.
L'evoluzione tecnologica ha modificato radicalmente i sistemi di gestione delle informazioni in rete. Il principio attuale dello sviluppo web può essere riassunto così: "informazioni sempre aggiornate, sempre disponibili .
Ja diffusione di linguaggi e tecnologie lato server (Asp, Php, j2ee, jsp, servlet, .net e altri) hanno portato notevoli semplificazioni nella gestione di informazioni, fornendo modelli di sviluppo e framework che, se da una parte hanno reso lo sviluppo rapido e proficuo, dall'altra hanno allontanato il programmatore dai protocolli, spesso impedendo un controllo funzionale e preciso sulla sicurezza del flusso di dati.
La figura 1.2 descrive la struttura tipica di una semplice applicazione Web sviluppata con un linguaggio di scripting lato server.
- Il web server riceve dal client la richiesta di un'informazione aggiornata.
- L'applicazione (ospitata dal server applicazioni) riceve la richiesta proveniente dal web server e la elabora, interrogando la fonte dati e ricevendo una risposta.
- L'applicazione risponde al web server con una pagina formattata e comprensibile (contenente i dati provenienti dalla fonte dati).
- Il web server risponde al client fornendo l'informazione richiesta.
Questo struttura, tuttora in uso, ha diversi vantaggi, tra cui il fatto che le informazioni sono più semplici da aggiornare e che i tre livelli "logici" dell'applicazione (presentazione, logica, dati) sono separati.
L'ultima "moda" dello sviluppo dell'applicazione Web (non una novità, ma solo un'applicazione evoluta di tecnologie già esistenti), è il cosiddetto Web 2.0.in cui viene utilizzata una tecnologia chiamata Ajax Asynchronous JavaScript and XML per fornire all'applicazione web funzionalità di aggiornamento asincrono. La figura 1.3 descrive la struttura di un'applicazione Ajax.
La trasmissione di dati tra il client e il server avviene secondo richieste "esclusive per zone della pagina", in questo modo non si ha la necessità di aggiornare tutta la pagina per visualizzare i contenuti aggiornati di un "box".
In realtà la teoria è leggermente più complessa, ma le dinamiche dell'architettura Ajax esulano dagli scopi di questa guida.
Questa struttura di applicazione Web va attentamente valutata in base alle proprie esigenze, domandandosi se il flusso di dati che la nostra applicazione dovrà gestire sarà tale da giustificare un tale sforzo progettuale, implementativo e di gestione. In caso di portali di notevoli dimensioni, una struttura di questo tipo può garantire una navigabilità ottimale per gli utenti e una gestione più granulare per i content manager.
Al giorno d'oggi, queste strutture complesse ed eterogenee risultano esser spesso vulnerabili a diverse tipologie di attacchi informatici.
La conoscenza delle tecniche di attacco più comuni e delle procedure "standard" per la messa in sicurezza delle nostre applicazioni web , ci permetterà di comprendere e risolvere alcuni dei problemi che potrebbero mettere a rischio i nostri sistemi e i nostri utenti.