Comunidad de diseño web y desarrollo en internet online

Pasar variables por url. Necesito aclaración.

Citar            
MensajeEscrito el 27 Ene 2009 09:29 am
Hola, tengo entendido que por problemas de seguridad se puso a off por defecto la variable register_globals. Esto se hizo para evitar que un usuario malintencionado pasara variables por url a una web. Por ejemplo, si el usuario introduce a mano:

www.miweb.com/autenticar.php?password=correcto

Con register_globals=off, no se podria leer la variable password en el script autenticar.php. Entonces, para obtener el valor de la variable password, yo lo he arreglado poniendo la sentencia $_GET["password"], y la pilla bien, pero mi pregunta es:

¿El problema de seguridad sigue siendo el mismo, no? es decir, si el usuario mete la url de antes, al leerla con $_GET, sigue teniendo el valor que el usuario ha metido. A ver si alguien me aclara esto.

Gracias.

Por espidifen33

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Ene 2009 01:25 pm
pero entonces usa post para logins es mas seguro usar post para este tipo de scripts saludos

Por talcual

686 de clabLevel



 

Colombia

msie7
Citar            
MensajeEscrito el 27 Ene 2009 11:06 pm
si usas
php y mysql


lo ma facil seria hacer un else


osea
q compare las passs
del suario logeado con la que se encuentra en la db

seria una forma facil y segura para cada archivo php
q utilices
seria una wena forma de evitar varios errores de login



weno espero q sepas de lo que hablo no dejo ejemplo
porq no me da el tiempo si necesitas ayuda buscame en

[email protected]

o envia e-mail a
[email protected]

by frank!

Por emonerd

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ene 2009 12:56 am
:lol: :lol:

Yo tengo entendido que el detalle de deshabilitar el register globals es que al momento de enviar una variable post tenias en el script disponible una variable como las que normalmente declaras ($variable), y podia reemplazar variables que tengas en el script.

Algo asi era la cosa.

Por GersonM_17

330 de clabLevel



Genero:Masculino   Héroes

Flash AS3 / PHP Developer

firefox
Citar            
MensajeEscrito el 28 Ene 2009 07:34 am
Gracias a todos por las respuestas. Pero creo que no me he explicado bien. Lo de la url

www.miweb.com/autenticar.php?password=correcto

era un ejemplo, no estoy haciendo nada de logins, realmente estoy haciendo una tienda virtual con urls de este tipo:

www.miweb.com/show_category?item=cd
www.miweb.com/show_category?item=libro
...

Estos enlaces están como destino en botones. Entoces sólo quiero saber qué diferencia hay entre recoger la variable item (en script show_category) con $item, o hacerlo con $_GET["item"]. Ya os digo que a partir de últimas versiones de php, no deja cogerla mediante $item, ya que register_globals esta a off, por motivos de seguridad. Pero pienso que al cogerla con $_GET["item"] el problema de seguridad es el mismo, ya que el usuario puede meter en la url lo que quiera y yo sigo recogiendo el valor de item.

Espero haberme explicado mejor ahora. Gracias

Por espidifen33

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ene 2009 02:21 pm
Eso mismo, mira si antes con register globals el usuario podia modificar casi todas las variables que tengas declaradas en el script ahora al hacerlo con $_GET['item'] solo podran ser modificadas las que verdaderamente tu esperas que sean modificadas, me explico?.

Antes si tu declaras una variable $nomodificar podia enviarse por url un valor a esta variable, ahora no es asi ya que solo las que tengan el formato $_GET['noImportaLoQuePongan'], podran obtener valores de la url.

Saludos

Por GersonM_17

330 de clabLevel



Genero:Masculino   Héroes

Flash AS3 / PHP Developer

firefox
Citar            
MensajeEscrito el 28 Ene 2009 02:29 pm
Lo olvidaba, obviamente las variables que pasas por GET no son de mayor importancia o al menos asi deberia ser ya que si son contraseñas o algo que pueda influir negativamente en tu web tendrias que usar post.

las variables en GET estan ahi para que el usuario sepa lo que envia o en todo caso poder modificarlas a su antojo, U_U eso creo yo

Por GersonM_17

330 de clabLevel



Genero:Masculino   Héroes

Flash AS3 / PHP Developer

firefox
Citar            
MensajeEscrito el 28 Ene 2009 03:21 pm
Entonces digamos que el agujero de seguridad sólo afecta a variables DECLARADAS, ¿no? Es decir si tienes el siguiente código en "script.php", con register_globals activado:

Código :

$condicion = false;
if ($condicion == true)
{
     hacer algo privado
}


entonces si el usuario mete la url: www.script.php?condicion=true entonces obviamente la lia parda. Pero si register_globals está desactivado y omitimos en el código de antes la declaración de la variable, no habría diferencia entre poner esto:

Código :

if ($condicion == true)
{
     hacer algo privado
}


o poner esto:

Código :

if ($_GET["condicion"] == true)
{
     hacer algo privado
}


¿Correcto?

Por espidifen33

23 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ene 2009 04:49 pm
;) Es la idea

Por GersonM_17

330 de clabLevel



Genero:Masculino   Héroes

Flash AS3 / PHP Developer

firefox
Citar            
MensajeEscrito el 29 Ene 2009 02:37 am
es mas o menos la idea, pero la seguridad no está enfocada al metodo GET, sino al post.
cuando tienes register_globals = on entonces puedes pasar cualquier variable por medio del url, sea post o get, por lo tanto cualquiera podría hacer:

Código :

 www.foo.com/login.php?aprovado=true
y el script entenderá esa variable como real, ahora, si está desactivado, puedes pasar la variable por $_POST y no hay forma de inyectarla por medio del url.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 29 Ene 2009 05:07 am
Mas claro ni el cafe que tomare hoy

*se me acabo el cafe y estoy tomando agua dulce XD

Por GersonM_17

330 de clabLevel



Genero:Masculino   Héroes

Flash AS3 / PHP Developer

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.