Sicurezza delle applicazioni web
In questo modulo verranno affrontate le principali tematiche legate alla sicurezza delle applicazioni web, per riuscire ad affrontare le sfide di sicurezza che applicazioni e librerie sempre più complessi ci pongono. Partendo dai fondamenti del protocollo HTTP e delle sue dinamiche, esamineremo le principali vulnerabilità e le contromisure per proteggere le applicazioni lato server. Attraverso esempi concreti e best practice, forniremo strumenti utili per garantire un ambiente sicuro e affidabile per le nostre risorse e i nostri dati. Altrettanta attenzione sarà riservata alla sicurezza lato client, analizzando le vulnerabilità più diffuse e offrendo suggerimenti pratici per mitigare i rischi. Dalla gestione delle sessioni utente alla validazione dei dati di input, ci concentreremo su soluzioni pragmatiche per sviluppare applicazioni web robuste e sicure. Inoltre, esploreremo le tecnologie all'avanguardia nel campo della sicurezza delle applicazioni web, offrendo una panoramica aggiornata delle ultime tendenze e degli strumenti più efficaci disponibili.
Evoluzione del web
Da quando il web è nato (oltre 30 anni fa) è cambiato moltissimo, è passato attraverso due grandi rivoluzioni e ora stiamo assistendo a una terza rivoluzione ancora, che non sappiamo se prenderà piede.
Agli albori del web i contenuti erano principalmente statici, chiunque avesse una connessione a internet poteva installare un server web ed esporre i propri contenuti, scritti per la maggior parte in semplice e puro HTML. Questo linguaggio di markup ci permette di integrare contenuti multimediali come testo, immagini e link ad altre risorse, in modo che sia semplice per un browser comprenderlo e mostrarcelo in una forma più interattiva. Questo viene comunemente chiamato web 1.0.
Successivamente, con l'avvento di connessioni internet sempre più veloci e dei motori di ricerca, uniti a una sempre crescente potenza computazionale abbiamo assistito ad alla nascita del web 2.0, caratterizzato da servizi sempre più interattivi con l'utente.
A oggi, i servizi web sono di fatto lo standard generale per fornire un servizio, anziché installare un software sul proprio dispositivo (che sia un personal computer, uno smartphone o un tablet), è sempre più comune esporre questi servizi attraverso un portale web. Sono infatti nati interi sistemi operativi che come principale utilizzo hanno quello di fornire un browser e basta.
Architettura di una moderna applicazione web
L'architettura più comune per una applicazione web, oggi, è quella di una architettura 3-tier.
Questa architettura prevede tre componenti:
- il client è costituito quasi sempre da un web-browser, questo software permette di navigare il web, esegue le richieste verso il server, salva alcuni dati dell'utente per una più facile navigazione. Contiene vari software che interpretano i dati ricevuti dal server al fine di costruire la pagina e renderla interattiva. Il client può implementare della logica attraverso l'uso di JavaScript, un linguaggio di programmazione interpretato dal browser
- il server è l'elemento con il quale il client dialoga direttamente, è il vero fornitore dei servizi e delle risorse che il client va poi a richiedere
- il database è il contenitore dei dati dell'applicazione, in genere non è possibile interagirci direttamente dal client ma solo dal server stesso.
Ognuno di questi tre elementi può essere il potenziale target di attacchi da parte di un utente malevolo, in base alle vulnerabilità di cui soffre l'applicazione web.