Dado algo de JavaScript que modifica el título de la página tomando datos variables
document.title = someVariable
Estoy buscando dirigir XSS basado en dom mientras mantengo el título bastante legible. Por lo tanto, hacer algo como escape()
o encodeURI()
no funcionará.
No necesariamente tengo control sobre cómo se puede usar el document.title en otros scripts, por lo que quiero asegurarme de que hago un poco de desinfección en la materia de menor destrucción, pero evito posibles escenarios donde la forma en que la variable se procesa más tarde posiblemente podría ser descodificado de tal manera que se convierta en XSS.
Mis primeros pensamientos fueron algo como esto:
someVariable = someVariable.replace('<script', 'noscript');
someVariable = someVariable.replace(/[<>'"]/g, '').replace(/%3[CEce]/, '');
document.title = someVariable;
Lo que es mínimamente destructivo desde el punto de vista de la legibilidad, eliminar estos caracteres podría romper el código posterior, pero preferiría dividir el código en favor de la seguridad.
Siento que estoy rodando por mi cuenta aquí, así que me gustaría saber si hay un mejor enfoque que cumpla con los requisitos de legibilidad. Si no, ¿hay otros filtros o desinfección recomendados?