Diventa Autore per CoreTech | Scopri di più
17/02/22 CoreTech Blog
Un numero sorprendente di materiali di studio consiglia la convalida dell'input come la migliore protezione contro XSS. Esistono molteplici problemi con questo approccio e tutti sono noti per aver causato innumerevoli problemi di sicurezza nel mondo reale. Ad esempio, solo perché l'input è ritenuto valido nel contesto della logica di business dell'applicazione non significa che sia sufficientemente sicuro, per non dire abbastanza sicuro, per essere elaborato in un altro contesto.
Inoltre, fare affidamento sulla convalida dell'input presuppone che gli sviluppatori siano a conoscenza di tutte le fonti attraverso le quali i dati possono entrare nel sistema, sia nel momento in cui viene progettata la convalida dell'input sia in qualsiasi momento futuro. Allo stesso modo, affinché la convalida dell'input sia un mezzo sufficiente per prevenire lo scripting tra siti, tutti i contesti in cui l'input dell'utente viene utilizzato come output dovrebbero essere conosciuti in anticipo.
Questo ci porta al motivo più importante per cui la sola convalida dell'input non è efficace nel prevenire le vulnerabilità XSS: la vulnerabilità viene infine sfruttata nel browser Web del client, dopo che i dati dannosi forniti dagli aggressori sono stati utilizzati per generare una risposta, come una pagina web. Ne consegue quindi che è solo in questa fase che XSS può essere efficacemente prevenuto, e codificando o evadendo i dati nel contesto in cui l'output sta per essere utilizzato. Ad esempio, l'inserimento di testo fornito dall'utente all'interno di una pagina Web HTML richiede un approccio completamente diverso alla codifica dell'output rispetto all'inserimento dello stesso identico testo all'interno di un file XML, una risposta JSON, un file CSV o un codice JavaScript.