Vai al contenuto

Cross-site scripting (XSS)

Con XSS, contenuti esterni diventano codice eseguibile nel browser. Conta il modo in cui l’applicazione inserisce gli input nelle proprie pagine.

Noto anche comeXSS
Sicurezza informatica

Il cross-site scripting, o XSS, è un attacco in cui codice esterno viene eseguito nel browser nel contesto di un sito interessato. L’applicazione inserisce dati non attendibili in una pagina in modo che il browser li interpreti come contenuto eseguibile. Il codice può, per esempio, modificare la pagina visualizzata o inviare richieste con i permessi della persona che ha effettuato l’accesso.

Un commento nel portale di progetto

Un portale di progetto fittizio salva i commenti nel campo noteText e li mostra in seguito agli altri membri del team. Il campo è destinato a testo normale. Se il contenuto viene inserito come HTML senza controlli adeguati, input appositamente preparati possono introdurre contenuti eseguibili. Salvare un commento nel proprio database non lo rende attendibile per la successiva visualizzazione. Anche i valori dei sistemi collegati vanno trattati in base al punto in cui vengono mostrati.

Se il commento deve essere solo testo, l’applicazione usa un’uscita testuale adatta o la visualizzazione sicura predefinita del framework. Se si consente intenzionalmente HTML formattato, serve una soluzione di sanitizzazione mantenuta che definisca i contenuti ammessi.

Il contesto di uscita determina la protezione

MDN e OWASP distinguono il trattamento di testo, HTML, attributi e altri contesti di uscita. Una codifica adatta al normale testo HTML non protegge universalmente JavaScript o URL. La sola validazione degli input non sostituisce la protezione in uscita.

Una Content Security Policy può inoltre limitare il codice eseguibile. Non sostituisce né punti di uscita sicuri né la sanitizzazione HTML necessaria. Lo scenario del portale illustra questa distinzione; non descrive un test di sicurezza eseguito.

Fonti