• Domingo 22 de Diciembre de 2024, 23:22

Autor Tema:  Seguridad Del Paso De Variables Por Url  (Leído 2452 veces)

ladlo

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Seguridad Del Paso De Variables Por Url
« en: Jueves 3 de Noviembre de 2005, 20:38 »
0
Hola a todos.

Hace poco que he empezado a programar en PHP, y por ahora todo marcha sobre ruedas, pero tengo una duda.

Segun leo en http://es.php.net/manual/es/security.globals.php se recomienda dejar register_globals en OFF para evitar potenciales peligros como que el usuario defina variables (ponen un ejemplo con un sistema de autentificacion).
Yo tengo el register_global en OFF y accedo a las variables de URL a traves de $_GET, segun se recomienda ahora, pero aun asi puedo introduci una URL asignando manualmente el valor de una (o mas) varables. Llevado al caso que ponen de ejemplo en el manual de PHP quiere decir que podria "autentificarme" a mano alterando la variable:

www.dominio.com/pagina.php?autorizado=true      por ejemplo

¿Es esto normal?. La prueba la he hecho con el navegador desde el servidor que me he montado (PHP v5.05 sobre windows, instalado como modulo de un Apache 1.33).

Si eto es normal, ¿como puedo pasar parametros entre dos scripts por URL sin que queden expuestos?, o ¿hay alguna manera de evitar que el usuario pueda modificar los parametros URL?. El contexto del problema es que desde la pagina A quiero pasar parametros a travesde un link a una pagina B (que realiza cierta consulta). No puedo ponerlo como una variable de sesion a no ser qyue consiga de alguna manera discriminar en que link de la pagina A clickeo el usuario...

En fin, un pequeño lio.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Seguridad Del Paso De Variables Por Url
« Respuesta #1 en: Sábado 5 de Noviembre de 2005, 08:25 »
0
puedes modificarlos, en vez de pasar algo obvio, manda algo dificil de decifrar. por que de otra manera tendran que ser con post, o por lo menos eso conozco yo,ahhh y tambien puedes usar sesiones en vez de paso de parametros-.
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

ladlo

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Seguridad Del Paso De Variables Por Url
« Respuesta #2 en: Domingo 6 de Noviembre de 2005, 10:38 »
0
Gracias por el consejo Darktigerhell, lo tendre que cifrandolos. Ya he visto que lo que ocurria es que habia entendido mal el manual de PHP y que es que los parametros URL siempre se pueden modificar a mano aunque register_globals este a OFF :_D

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Seguridad Del Paso De Variables Por Url
« Respuesta #3 en: Lunes 7 de Noviembre de 2005, 21:58 »
0
A ver... hay un error de conceptos....

Cuando tienes habilitados register globals, produce que, al pasar una variable por GET, por ejemplo que tengamos www.miweb.com?aut=yes, PHP generara la variable $aut cuyo contenido será 'yes'. Pero si pasamos por un formulario una input, por ejemplo:
<input name="aut" ...  value="yes">
Esto, tambien generará en php una variable $aut y cuyo contenido será 'yes'. Y si mal no recuerdo, pasa lo mismo con las sesiones.


Por lo tanto el usuario puede facilmente falsear información, enviando por GET el valor de "aut" que debía recibirse por POST.

Para esto, se usa Register Globals en OFF, con lo cual el valor enviado estará en un array $_POST, $_GET, $_SESSION , etc... De esta forma $_POST['aut'] será distinto de $_GET['aut'].


Lo único que no se puede falsear (o al menos es extremadamente dificil) es la información almacenada en una sesión. Las variables enviadas por POST, se pueden falsear con algún, aunque no es muy fácil (en realidad, dependiendo de la seguridad de tu web). Las cookies son algo complicadas de falsear para un usuario normal y GET es la más fácil de todas.

Una forma algo segura es chequear el valor de $_SERVER['HTTP_REFERER']. Esto debe devolverte la dirección de la página que llamó al archivo en que se está ejecutando el script.

Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |