Mi analizador de código estático marca este fragmento de Javascript en el sitio web de mi cliente como un posible XSS basado en DOM:
var x = $('#' + window.location.hash.substr(1))
x.addClass('highlighted').find('div').show();
¿El código está directamente en $(function(){ ... }
, por lo que debe ejecutarse cada vez que se carga la página? (Confesión: Sé muy poco acerca de jQuery ...)
En Google, encontré que jQuery hizo más difícil explotar un código como este después de este artículo de 2011:
Pero aún son posibles los ataques, uno de los que aún funciona es enlace .
¿Mi cliente sigue siendo vulnerable? Creo que sí, pero no puedo encontrar un exploit porque no conozco a jQuery lo suficiente como para entender lo que está pasando.
Editar : dado que el valor transferido a $()
siempre comienza con #
, sospecho que esto bloquea cualquier vulnerabilidad de esto, y probarlo en la consola de Firefox y Chrome parece confirmarlo. pero todavía no estoy seguro de que no haya otra manera :)