La prevenzione dell'XSS riguarda esclusivamente il contesto. Sono necessarie strategie diverse a seconda del contesto in cui verranno inseriti i dati non attendibili di cui si sta eseguendo l'escape.
Anche se penso che il tuo metodo andrebbe bene negli elementi HTML e negli attributi HTML tra virgolette doppie, avresti problemi nei seguenti contesti:
- In attributi HTML con virgolette singole o senza virgolette, sarai pwned.
- Ad es. un attributo
href
, verrai pwnato con es. a javascript:
o vbscript:
URL.
- Nei valori letterali stringa JavaScript utilizzando virgolette singole, verrai pultato.
- Nei valori letterali delle stringhe JavaScript utilizzando doppie virgolette, un utente malintenzionato potrebbe interrompere l'esecuzione dello script inserendo una nuova riga e quindi causare un errore di sintassi. Ciò potrebbe avere conseguenze inaspettate e sfavorevoli in alcune circostanze.
- E poi c'è il CSS, che ha il proprio set di regole diverse ...
Per una guida dettagliata su come farlo correttamente, raccomando vivamente il cheat di prevenzione di OWASP XSS . Penso che le principali lezioni da tenere a casa su tutto ciò siano: XSS è complicato. Non affidarti alla tua soluzione prodotta a casa per fermarla. Utilizza invece una libreria ben testata.
(E Alexander O'Mara ha assolutamente ragione nel suo commento.Se questo è nel browser , vai con textContent
.)