Menu

#79 No se codifican valores de parámetros en funciones javascript que crean URLs

someday
new
nobody
None
defect
runtime
major
2015-12-22
2012-04-11
No

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&param2=a#b&param3=1
Componentes del URL construído (valores resultantes): destino: p.php; parámetros GET: param1 = "v1", param2 = "a"; fragmento = "b&param3=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.

Discussion

  • Gaston Martini

    Gaston Martini - 2014-05-08
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,21 +1,14 @@
    -Existen funciones javascript que construyen URLs sin codificar componentes que reciben como parámetros, con lo cual se pueden obtener resultados no esperados, dependiendo del valor de dichos parámetros.  
    +Existen funciones javascript que construyen URLs sin codificar componentes que reciben como parámetros, con lo cual se pueden obtener resultados no esperados, dependiendo del valor de dichos parámetros.
    
    +Por ejemplo, si un valor de parámetro incluye el caracter '#', en el URL construido quedará como anchor la porción que sigue a dicho caracter:
    
    -Por ejemplo, si un valor de parámetro incluye el caracter '#', en el URL construido quedará como anchor 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&param2=a#b&param3=1
    +_Componentes del URL construído_ (valores resultantes): destino: p.php; parámetros GET: param1 = "v1", **param2 = "a"**; **anchor = "b&param3=1"**
    
    +La solución sería aplicar `encodeURIComponent()` a los valores que lo requieran. Sin embargo, para no producir regresiones hay que verificar si no se están recibiendo parámetros con los valores previamente codificados.
    
    -Valores de origen
    -     destino: "p.php"; parámetros GET: param1 = "v1", param2 = "a#b", param3 = 1 
    -URL construído
    -     p.php?param1=v1&param2=a#b&param3=1 
    -Componentes del URL construído (valores resultantes)
    -     destino: p.php; parámetros GET: param1 = "v1", **param2 = "a"**; **anchor = "b&param3=1"**
    -
    -La solución sería aplicar `encodeURIComponent()` a los valores que lo requieran. Sin embargo, para no producir regresiones hay que verificar si no se están recibiendo parámetros con los valores previamente codificados.  
    -
    -
    -Algunas funciones afectadas (puede haber más):  
    -
    +Algunas funciones afectadas (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`. 
    +  * `mostrarSeleccionable()`, en la construcción de `filtrosAdicionales`.
    
    • Milestone: --> someday
     
  • Gaston Martini

    Gaston Martini - 2014-05-08
    • assigned_to: Gaston Martini --> nobody
     
  • Gaston Martini

    Gaston Martini - 2015-12-22
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,14 +1,14 @@
    -Existen funciones javascript que construyen URLs sin codificar componentes que reciben como parámetros, con lo cual se pueden obtener resultados no esperados, dependiendo del valor de dichos parámetros.
    +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 anchor la porción que sigue a dicho caracter:
    +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&param2=a#b&param3=1
    -_Componentes del URL construído_ (valores resultantes): destino: p.php; parámetros GET: param1 = "v1", **param2 = "a"**; **anchor = "b&param3=1"**
    +_Componentes del URL construído_ (valores resultantes): destino: p.php; parámetros GET: param1 = "v1", **param2 = "a"**; **fragmento = "b&param3=1"**
    
    -La solución sería aplicar `encodeURIComponent()` a los valores que lo requieran. Sin embargo, para no producir regresiones hay que verificar si no se están recibiendo parámetros con los valores previamente codificados.
    +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 funciones afectadas (puede haber más):
    +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`.
    
     

Log in to post a comment.