fix(security): sanear idioma de URL para cerrar XSS reflejado
El parametro ?idioma= llegaba crudo (la query string se reenvia entera a slug.php via .htaccess) y se reflejaba sin escapar en RUTA_RAIZ/ROOT, lang="..." y variables JS de las plantillas -> XSS reflejado explotable en cualquier web (p.ej. ?idioma=';alert(document.cookie);// en contexto JS). - variables.php: allowlist de idiomas antes de definir constantes/render; cualquier valor desconocido se descarta. - footer.tpl/header.tpl: json_encode en los sinks JS (defensa en profundidad).
This commit is contained in:
@@ -35,7 +35,7 @@ if (!@$_REQUEST["viewAMP"]){
|
||||
Resource::link('/css/cesta.css', true);
|
||||
?>
|
||||
<script>
|
||||
var RUTA_RAIZ = '<?=RUTA_RAIZ;?>';
|
||||
var RUTA_RAIZ = <?=json_encode(RUTA_RAIZ);?>;
|
||||
var ENLACE_CESTA = '<?=t(@$apartadoCesta, "enlace");?>';
|
||||
var TEXTOS_CESTA = {
|
||||
productoAnadido: '<?=t_var("Producto añadido");?>',
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
?>
|
||||
<script>
|
||||
var hooksToken = '<?=sha1(session_id().$_SERVER["HTTP_HOST"]);?>';
|
||||
var language = '<?=@$_REQUEST['idioma']?:'www'?>';
|
||||
var language = <?=json_encode(@$_REQUEST['idioma']?:'www')?>;
|
||||
{CMSAPI_JS}
|
||||
</script>
|
||||
<?
|
||||
|
||||
Reference in New Issue
Block a user