Software > Tu Web meteorológica

Plantilla Jachym (Meteotemplate)

<< < (165/171) > >>

kocher:
Muchas gracias mariete

He encontrado esto en Internet, parece que puede ser de ayuda.
Creo que se trata de editar el archivo "redirect.php" mediante un sencillo código PHP o javascript:

PHP:

   
--- Código: ---<?php
/* Redirect browser */
header("Location: http://www.mysite.com");
/* Exit to prevent the rest of the code from executing */
exit;
?>
--- Fin del código ---

JavaScript:


--- Código: ---response.sendRedirect("http://www.mysite.com");
--- Fin del código ---


Este es el enlace en que se explica todo:  https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html


Aunque todavía no se muy bien como ponerlo en acción en Meteotemplate; por ejemplo, el código PHP ¿hay que ponerlo dentro del header de la página?.

El código javascript parece muy fácil de instalar, pero ..¿que dirección debemos poner en http://www.mysite.com")

Quizás lleguemos a solucionar este mal asunto.

¿Que opinaís?


jmviper:
Buff

Pues un peligro ese script sin validar la URL... cualquiera puede poner de parámetro URL la dirección que quiera y ponerlo como un enlace que enlace (valga la redundancia  *+*) a la página que quiera.

Generalmente se hace en emails donde se dan enlaces que llevan a la web falsa que quiere robar tus datos.

En cualquier caso, veamos:


--- Cita de: kocher en 26 de Agosto de 2020, 12:08:28 ---
Creo que se trata de editar el archivo "redirect.php" mediante un sencillo código PHP o javascript:

PHP:

   
--- Código: ---<?php
/* Redirect browser */
header("Location: http://www.mysite.com");
/* Exit to prevent the rest of the code from executing */
exit;
?>
--- Fin del código ---

JavaScript:


--- Código: ---response.sendRedirect("http://www.mysite.com");
--- Fin del código ---


Este es el enlace en que se explica todo:  https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html


Aunque todavía no se muy bien como ponerlo en acción en Meteotemplate; por ejemplo, el código PHP ¿hay que ponerlo dentro del header de la página?.

El código javascript parece muy fácil de instalar, pero ..¿que dirección debemos poner en http://www.mysite.com")

Quizás lleguemos a solucionar este mal asunto.

¿Que opinaís?


--- Fin de la cita ---

Kocher en ese enlace pone el ejemplo con Java, no con Javascript. Aunque puedan tener en común lo de Java son muy diferentes en cuanto a cómo se ejecutan y no tienen los mismos comandos o sintaxis. Además JavaScript funciona sólo del lado del cliente y esta redirección se hace a nivel de servidor (con redirect.php)

En PHP header debe de ponerse antes de cualquier inicio de código HTML (y de PHP):

https://www.php.net/manual/es/function.header.php

al inicio de ese archivo. Si ponemos ese código que has puesto se redireccionará a la dirección que pongamos en http://www.mysite.com y se saldrá del script no ejecutando lo que queda de código, por lo que no redireccionará a lo que se le ponga en el parámetro url.

Lo que ocurre es que todos los enlaces que funcionen con ese script PHP llevarán a la página que le hayamos puesto evitando que cumpla con la función que debería hacer.



kocher:
Saludos jmviper

Como siempre, tienes toda la razón; se trata de Java (no javascript) .., ¡hayyy, mis neuronas! je je je

En cuanto a lo de PHP, parece claro que hay colocarlo dentro del header

Pero, efectivamente, si ponemos la dirección (completa) de nuestra web, deja de realizarse el script.

Entonces .. en tu opinión, ¿cual puede ser la solución definitiva?

Gracias por aclarar

jmviper:
Hola kocher y saludos ;)

Por lo que he visto por Google de ese tal archivo redirect.php al cual no tengo acceso a su código PHP al no tenerlo yo (imposible ver código PHP de un archivo en el navegador) es una especie de redirección "bonita" con efectos CSS y un loading o cargando que como digo queda más bonito que una redirección simple.

El script recogerá del query de la URL el campo url (creo) que lleva a la url a la que redirige sin comprobar que pueda ser "maliciosa".

Por ejemplo si ponemos http://nuestraweb.com/redirect.php?url=webmaliciosa.com nos llevaría a esa web falsa que podría ser fraudulenta.

La solución (creo que la mejor y la que debería de hacer Jachym si no la ha hecho ya) es poner una lista de direcciones url confiables (tanto internas del servidor o externas) o lista blanca para que sólo pudiese redirigir a esas urls confiables.

Viendo un poco el tema por google aquí en este hilo de stackoverflow aparece la solución que yo digo:

https://security.stackexchange.com/questions/121643/is-it-safe-to-redirect-to-url-parameter-without-filtering

En Whitelisting or validation o Referer check se pone el ejemplo de filtrar ese parámetro que lleve a la url redirigida sólo con archivos o direcciones confiables.
Serían las urls a las que se llama en ese redirect.php en la web de meteotemplate (ignoro a todas las que se llaman) para crear ese efecto de redirección "bonito" las que pudieran solamente ser redirigidas.

Como he dicho, no sé en la web de cada uno de meteotemplate cuáles son esas url redirigidas para hacer una lista blanca y debería ser Jachym en futuras actualizaciones (si no lo ha hecho ya) el que lo hiciese.

No sé si lo he explicado bien pero los tiros van por ahí  *+* *+*


kocher:
Muy interesante.

Hasta donde yo se, Jachym no ha cambiado el archivo responsable de este problema; al parecer está trabajando en la publicación de una nueva plantilla.

Te adjunto el código de la página problemática:


--- Código: ---
<?php

############################################################################

# Meteotemplate
#  http://www.meteotemplate.com
#  Free website template for weather enthusiasts
#  Author: Jachym
#           Brno, Czech Republic
#  First release: 2015
#
############################################################################
#
# Loading Spinner
#
#  A script which shows a loading spinner while redirecting.
#
############################################################################
# Version (change log - http://meteotemplate.com/blog/?page_id=42)
#
#  v6.0 Blueberry 2016-04-09
#
############################################################################


include("../../config.php");
include($baseURL."css/design.php");
include($baseURL."header.php");
$address = urldecode($_GET["url"]);
?>
<html>
<head>
<?php metaHeader()?>
<style>
#loading{
background-color: transparent;
height: 100%;
width: 100%;
position: fixed;
z-index: 1;
margin-top: 0px;
top: 0px;
}
#loading-center{
width: 100%;
height: 100%;
position: relative;
}
#loading-center-absolute {
position: absolute;
left: 50%;
top: 50%;
height: 200px;
width: 200px;
margin-top: -100px;
margin-left: -100px;

}
.object{
-moz-border-radius: 50% 50% 50% 50%;
-webkit-border-radius: 50% 50% 50% 50%;
border-radius: 50% 50% 50% 50%;
position: absolute;
border-left: 5px solid #FFF;
border-right: 5px solid #FFF;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
-webkit-animation: animate 2s infinite;
animation: animate 2s infinite;
}

#object_one{
left: 75px;
top: 75px;
width: 50px;
height: 50px;
}

#object_two{
left: 65px;
top: 65px;
width: 70px;
height: 70px;
-webkit-animation-delay: 0.1s;
animation-delay: 0.1s;
}

#object_three{
left: 55px;
top: 55px;
width: 90px;
height: 90px;
-webkit-animation-delay: 0.2s;
animation-delay: 0.2s;
}
#object_four{
left: 45px;
top: 45px;
width: 110px;
height: 110px;
-webkit-animation-delay: 0.3s;
animation-delay: 0.3s;

}

@-webkit-keyframes animate {


50% {
-ms-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
  }
 
100% {
-ms-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
  }  

}

@keyframes animate {

50% {
-ms-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
  }
 
100% {
-ms-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
  }  
}
</style>
</head>
<body onload="redirectpage()">
<div id="loading">
<div id="loading-center">
<div id="loading-center-absolute">
<div class="object" id="object_four">
</div>
<div class="object" id="object_three">
</div>
<div class="object" id="object_two">
</div>
<div class="object" id="object_one">
</div>
</div>
</div>
</div>
</body>
<script>
function redirectpage(){
window.location.href = "<?php echo $address ?>";
}
</script>
</html>

--- Fin del código ---

Las direcciones posible para que funcione este script, son:

index.php
indexSummary.php
viewData.php?parameter=T
viewData.php?parameter=D
viewData.php?parameter=A
viewData.php?parameter=H
viewData.php?parameter=P
viewData.php?parameter=W
viewData.php?parameter=G
viewData.php?parameter=R
viewData.php?parameter=S.php


Ahora habría que ver como elaborar esa lista blanca  :;







Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa