Variables superglobales

Lenguaje de Programación en Php, Principiantes, Intermedios y Avanzados, Tips, Ejercicios, foro de preguntas y respuesta, ayuda mutua.

Variables superglobales

Notapor admin » Jue Abr 17, 2008 5:02 am

¿Que son las variables superglobales?

Las variables superglobales son como una clasificación para obtener el valor de una variable sólo y exclusivamente por un método, por ejemplo si enviamos variables a través de la barra de direcciones de un navegador de esta forma:



http://www.pagina.com/pagina.php?nombre ... ais=mexico

Para mostrar el resultado de esto en pantalla debemos hacer lo siguiente:

<echo>

De igual forma si tenemos un formulario y elegimos el método GET, las variables son recogidas exactamente de la misma forma, ya que el método GET hace que el formulario mande todas las variables a la barra de direcciones.

Pero que pasa si escogemos el método POST, esto significa que sólo se leerán las variables que hayan sido enviadas directamente del formulario, para leerlas debemos hacer lo siguiente:

<echo>

Tu pensarás, para que hacer esto si con usar $nombre, $apellido y $pais no tengo que preocuparme por esto, bueno, desde antiguas versiones de PHP existió una opción llamada register_globals que siempre estuvo activada por defecto, con esto se permitía que sin importar de donde se enviara una variable, ya sea de la barra de direcciones o de un formulario se pudiera leer en todos los scripts.

Debido a esto empezaron a surgir diversos problemas de seguridad, por ejemplo supongamos que tenemos un formulario con los campos nombre, apellido y pais y hemos puesto que no se puedan escribir más de 20 letras en todos los campos, cualquiera se saltaría fácilmente este bloqueo escribiendo las variables en la barra de direcciones, debido a que register_globals está activado, el script daría por válido estas variables y si alguien malintencionado escribió un nombre de 1000 caractéres pues ya supondrás el problema, igualmente facilitaba el SQL Injection que es insertar sentencias a bases de datos, lo que puede permitir tener un acceso total a esta.

Ejemplo de SQL Injection:

http://www.pagina.com/formulario.php?variable=drop database basededatos

Es por esta razón que la gente de PHP decidió desactivar esta función ya que era ignorada por completo y era necesario que la gente se diera cuenta de la importancia de la forma en como se usan las variables.

Cuando PHP 4 se dió a conocer por primera vez causó una polémica en todos los usuarios de PHP ya que sus scripts que siempre habían funcionado de repente comenzaron a tener problemas y ya no funcionaban correctamente, muchos usuarios decidieron modificar esta opción y dejarla en On para que los antiguos scripts siguieran funcionando.

Aunque en las versiones 4 y 5 aún se permite activar manualmente register_globals, en la futura versión PHP 6 esta se eliminará. Si se intenta activar esta opción, PHP mostrará un error E_CORE_ERROR.
Avatar de Usuario
admin
Site Admin
 
Mensajes: 238
Registrado: Sab Jun 30, 2007 2:31 am
Ubicación: Lima

Volver a Programando con PHP e interactuando con Mysql

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron