Existen funciones javascript que construyen URLs, pero no codifican los valores de parámetros que reciben y que van a formar parte de la cadena de consulta del URL construído, con lo cual se pueden obtener resultados no esperados, dependiendo de los valores recibidos.
Por ejemplo, si un valor de parámetro incluye el caracter '#', en el URL construido quedará como fragmento la porción que sigue a dicho caracter:
Valores de origen: destino: "p.php"; parámetros GET: param1 = "v1", param2 = "a#b", param3 = 1
URL construído: p.php?param1=v1¶m2=a#b¶m3=1
Componentes del URL construído (valores resultantes): destino: p.php; parámetros GET: param1 = "v1", param2 = "a"; fragmento = "b¶m3=1"
La solución sería aplicar encodeURIComponent()
a los valores que lo requieran. Sin embargo, para no producir regresiones hay que verificar que los valores de los parámetros relevantes no estén codificados previamente.
Algunas de las funciones afectadas son (puede haber más):
mostrarPagina()
y mostrarPagina_iframe()
deberían codificar la mayoría de los parámetros que reciben. mostrarSeleccionable()
, en la construcción de filtrosAdicionales
.
Diff:
Diff: