



Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Un'analisi dettagliata della sicurezza web, esaminando i protocolli http, le vulnerabilità comuni come sql injection e cross-site scripting (xss), e le contromisure per proteggere le applicazioni web. Vengono discussi concetti chiave come la same origin policy, l'autenticazione http e la gestione delle sessioni, offrendo una panoramica completa delle sfide e delle soluzioni nel campo della sicurezza web. Il documento evidenzia l'importanza della validazione degli input, della sanificazione degli output e dell'adozione di pratiche di sviluppo sicure per prevenire attacchi e proteggere i dati degli utenti. Inoltre, vengono presentate le architetture a tre livelli delle applicazioni web moderne e le implicazioni di sicurezza dei metodi get e post.
Tipologia: Appunti
1 / 5
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




La Web Security non è un campo definito in modo rigoroso come la ricurezza crittografica. La sua natura è quella di “bersaglio mobile”, poiché non esiste una soluzione definitiva e permanente. La sicurezza pratica delle applicazioni web dipende da una complessa interazione di fattori, tra cui: Dettagli standard di rete; Specifiche di implementazione; Versioni concrete di browser e server.
L’ Hyper Text Protocol (http) è il protocollo a livello applicativo che gestisce il trasferimento di richieste ed informazioni ipertestuali tra client (il browser) ed il server. Architettura Client-Server: Il client (utente) avvia sempre la comunicazione, navigando tramite URL e inviando richieste. Il server risponde consegnando i dati richiesti; Protocollo stateless: http è intirinsecamente “stateless”, ovvero non mantiene memoria delle sessioni o delle richieste precedenti; Metodi HTTP: I metodi principali per le richieste sono GET (richieste di una pagina) e POST (invio di dati con un “playload”, o corpo della richiesta); Contenuto statico vs contenuto dinamico: Il server può fornire dati statici (pagine HTML, immagini) oppure dinamici, ovvero calcolati su richiesta da un’applicazione web. Questo calcolo può avvenire: o Server-Side: Tramite script come Perl, ASP, JSP, o Client-Side: Tramite script eseguiti nel browser, come JavaScript, Flash o Applet. Architettura a tre livelli (three-tier): Le applicazioni web moderne seguono spesso un’architettura a tre livelli: Presentation (1st tier) (il client/browser), Business Logic (2nd tier) (il web server/application server) e Backend (3rd tier) (tipicamente i database). GET vs POST Sebbene entrambi i metodi inviino dati, la loro gestione ha implicazioni di sicurezza critiche: GET: i dati vengono accodati all’URL (es. ...?name=blah&type=1). Questo espone informazioni sensibili: o Nei log del web server e dei proxy; o Nell’header HTTP Referer (quando si clicca un link verso un altro sito); o Nei segnalibri (bookmarks) e nella cronologia, che possono essere facilmente condivisi. POST: I dati vengono inseriti nel corpo della richiesta HTTP, non nell’URL. Per il trasporto di dati sensibili, è imperativo utilizzare HTTPS (http su SSL/TLS) e il metodo POST.
Ad ogni richiesta il client invia degli header HTTP. Se si usa HTTP, questi header sono trasmessi in chiaro con HTTPS invece sono cifrati. Essi contengono informazioni come il tipo di browser, la lingua e i cookie. Alcuni header possono contenere informazioni private che minacciano la privacy: FROM: L’indirizzo e-mail dell’utente; AUTHORIZATION: Contiene le credenziali di autenticazione. COOKIE: Dati inviati dal server per la gestione della sessione; REFERER: La pagina di provenienza, che può includere termini di ricerca sensibili. Cookies I cookie sono stati introdotti per permettere la gestione delle sessioni (session management) su un protocollo stateless come HTTP. Il server invia un cookie nella sua risposta; il client lo memorizza e lo invia automaticamente nelle richieste successive verso lo stesso server. Sebbene utili, i cookie sono la principale fonte di preoccupazione per la privacy, poiché possono essere usati per tracciare il comportamento degli utenti online. Per questo motivo, i cookie devono essere considerati informazioni confidenziali. Autenticazione http HTTP supporta due modalità di autenticazione:
Un attacco CSRF si verifica quando un sito web malevolo induce il browser di un utente a eseguire un’azione indesiderata su un sito fidato per il quale l’utente attualmente autenticato. (Es. l’utente è loggato sulla sua banca e visita un sito malevolo che, a sua insaputa, invia una richiesta di bonifico alla banca) Prevenzione (Synchronizer Token Pattern): è la difesa più comune.
Una tecnica malevola che inganna un utente facendogli cliccare su qualcosa di diverso da ciò che crede di cliccare. Comunemente, questo avviene caricando il sito bersaglio (es. la pagina “elimina account”) all’interno di un trasparente, posizionato sopra un’interfaccia apparentemente innocua (es. un pulsante “vinci un premio”) Prevenzione: Utilizzare l’header http X-Frame-Options per comunicare al browser se la pagina può essere inserita in un frame o meno (es. DENY per impedirlo totalmente, SAMEORIGIN per permetterlo solo dallo stesso sito).
Poiché HTTP è stateless, le applicazioni web devono gestire le sessioni manualmente. Questo avviene memorizzando i dati della sessione sul server e associandoli a un Session ID univoco, che viene inviato al client (tramite cookie, URL o campi nascosti) e restituiti ad ogni richiesta. I cookie sono il metodo preferibile. Attacchi alla Sessione: Mirano a rubare il Session ID tramite: