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.
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
Termini correlati
- FrontendIl frontend è l’interfaccia usata dalle persone. I riscontri utili nel browser non sostituiscono i controlli decisivi sul server.
- JavaScriptJavaScript è un linguaggio per la logica applicativa, nel browser e altrove. Il suo ruolo è diverso da quello di HTML e CSS.
- HTMLHTML descrive struttura e significato dei contenuti web. Identifica elementi come titoli, tabelle e campi di inserimento.
- Minimizzazione dei datiLa minimizzazione limita i dati personali a quanto è adeguato, pertinente e necessario per una finalità definita.
- Politica di conservazione dei datiUna politica di conservazione definisce scopo, inizio, durata e fine della memorizzazione. Cancellazioni e copie richiedono una gestione tecnica.
- Crittografia envelopeLa crittografia envelope separa la chiave dei dati da quella che la protegge. File cifrato e chiave dei dati avvolta vanno gestiti insieme.
Il vostro progetto con ASES
Descriveteci il vostro progetto. Vi ricontatteremo con una prima valutazione.