Hace unos dias comentaba un error en paginator 1.6.3. El cual con ayuda hemos resuelto facilmente
http://www.forosdelweb.com/f18/pagin...-error-936617/
sin embargo he vuelto a encontrar un fallo, que al parecer es en la propagación de url.
digamos que estas es la url a la pagina 2
el problema esta, no entiendo bien, en que el ataque xss se aprovecha de un posible fallo en la propagación de la url y altera la url. eso lo descubri con el acunetix.
Cita:
http://web.abc/seccion.php?_pagi_pg=...bad%3d%27'
http://web.abc/seccion.php?_pagi_pg=2&tema=' onmouseover=prompt(923740) bad='
http://web.abc/seccion.php?_pagi_pg=2&tema=' onmouseover=prompt(923740) bad='
es decir, intercambia _pagi_pg por tema y viceversa
es un xss no persitente, pero me gustaria arreglar este problemilla.
a continuación pongo parte del codigo.
Código PHP:
/*
* Propagación de variables por el URL.
*------------------------------------------------------------------------
*/
// La idea es pasar también en los enlaces las variables hayan llegado por url.
$_pagi_enlace = $_SERVER['PHP_SELF'];
$_pagi_query_string = "?";
if(!isset($_pagi_propagar)){
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
//Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
$_pagi_propagar = array_keys($_GET);
}elseif(!is_array($_pagi_propagar)){
// si $_pagi_propagar no es un array... grave error!
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
}
// Este foreach está tomado de la Clase Paginado de webstudio
// (http://www.forosdelweb.com/showthread.php?t=65528)
foreach($_pagi_propagar as $var){
if(isset($GLOBALS[$var])){
// Si la variable es global al script
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
}elseif(isset($_REQUEST[$var])){
// Si no es global (o register globals está en OFF)
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
}
}
// Añadimos el query string a la url.
$_pagi_enlace .= $_pagi_query_string;
//------------------------------------------------------------------------
/*
* Generación de los enlaces de paginación.
*------------------------------------------------------------------------
*/
// La variable $_pagi_navegacion contendrá los enlaces a las páginas.
$_pagi_navegacion_temporal = array();
if ($_pagi_actual != 1){
// Si no estamos en la página 1. Ponemos el enlace "primera"
$_pagi_url = 1; //será el número de página al que enlazamos
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_primera</a>";
// Si no estamos en la página 1. Ponemos el enlace "anterior"
$_pagi_url = $_pagi_actual - 1; //será el número de página al que enlazamos
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_anterior</a>";
}
la verdad no se bien como resolverlo, pero creo que se podría pasar la cadena de variables que forma la url en el motor del blog directo a paginator
ustedes que dicen?
saludos