Sì, ci sono diverse librerie di questo tipo. La scelta della libreria dipende da quale linguaggio / framework di programmazione web stai usando.
Per prima cosa, devi iniziare leggendo XSS. Raccomando il seguente documento:
Successivamente, una volta acquisito familiarità con questo, posso indicarti alcune librerie che forniscono funzioni di escape ben testate:
Tuttavia, ti avverto che l'utilizzo di queste funzioni richiede conoscenze dello sviluppatore ed è potenzialmente soggetto a errori. Esistono molti diversi contesti di analisi in cui i dati dinamici possono essere iniettati in HTML, CSS o contenuto Javascript; ogni contesto di analisi può richiedere l'applicazione di una funzione di escape diversa (o una sequenza di funzioni di escape). Lo sviluppatore deve assicurarsi di applicare le funzioni di escape corrette ogni volta che inserisce dati dinamici in tali contenuti. Ciò richiede la conoscenza dei rischi dell'XSS e come difendersi da essi.
Questo approccio (eseguire manualmente l'escape dei dati ovunque venga utilizzato) è anch'esso soggetto a errori. È facile dimenticare di applicare una funzione di escape. Se hai 100 posti in cui inserisci dati dinamici nel documento, sarebbe facile ricordarli in 99 luoghi e inavvertitamente dimenticarti di scappare in uno di essi. Siamo solo umani, e questi tipi di errori sono facili da fare. Le librerie di funzioni di escape non aiutano gli sviluppatori a evitare questo problema.
Una soluzione migliore è usare un framework di programmazione web che aiuti gli sviluppatori a evitare questo problema. Lo state-of-the-art è auto-igienizzazione sensibile al contesto. Questo funziona particolarmente bene con framework che forniscono un sistema di template HTML. In tale sistema, il motore di template è responsabile per l'escape automatico di tutti i dati non statici che sono interpolati nel modello. Poiché il motore di template può identificare il contesto di analisi in cui i dati vengono inseriti dinamicamente, il motore di template può selezionare e applicare automaticamente la corretta funzione di escape.
Il problema principale con l'auto-disinfezione sensibile al contesto è che solo pochi framework di programmazione web attualmente lo supportano. Alcuni framework web che supportano l'auto-disinfezione sensibile al contesto: Google Ctemplate (Modelli di chiusura ), GWT, Google Clearsilver.
Per ulteriori informazioni su questo argomento, posso consigliare vivamente il seguente documento di ricerca: