Como contrapartida, encontraremos que la mayoría de los scripts de cierta complejidad que hay disponibles, han sido escritos presumiendo una configuración PHP globals on, con lo cual sencillamente, estos scripts no funcionarán con globals off. Por ello la mayoria de los grandes ISP aun tienen sus configuraciones PHP con registro global de variables.
Estamos en un periodo de transición, siendo de suponer que los programadores, tarde o temprano, iran actualizando sus scripts para dotarlos de mas seguridad, y los servidores solo ofrecerán PHP configurado de esta forma.
Como ultima nota acerca de la configuración de globals ten en cuenta que esta directiva no puede cambiarse dinámicamente con la función ini_set(), o mas exactamente si se puede, pero no sirve de nada ya que la directiva incluida en php.ini es la que se aplica al tiempo de la ejecución de tu script.
Si podriamos cambiar la configuración a traves de archivos .htaccess para servidores o carpetas concretas (php_flag register_globals off ), o si usas un servidor apache con host virtuales, y tienes acceso a los archivos de configuración del server, mediante directivas virtualhost:
<VirtualHost 127.0.0.1>
ServerName localhost
DocumentRoot /var/www/html/misitio
php_value register_globals 0
</VirtualHost>.
PHP es un lenguaje de programación muy flexible, particularmente en el manejo de variables. En PHP no necesitas declarar o iniciar una variable antes de usarla, ni declarar el tipo de valor que puede contener (string, decimal, entero) ya que cualquier variable puede tener en principio cualquier tipo de valor.
Sin embargo, esta comodidad tambien implica un problema de seguridad, ya que cualquiera puede introducir en la ejecución de tu script nuevas variables y valores con alcance global. Por naturaleza, el código es mas seguro cuando el programador se asegura de que el valor de una variable viene de donde tiene que venir y pertenece al tipo que se le supone.
Con globals on hay que poner un cuidado especial en la validación de los datos introducidos por los usuarios y en las variables no inicializadas por el propio script antes de su uso.
Por contra, si tenemos desactivada esta opción, la variable no se crea directamente, y solo podemos acceder a su valor via superglobales, con lo que implícitamente estamos asegurandonos de que el valor de esa variable viene proporcionado por el método (get, post) previsto.
Las variables internas quedan asimismo aisladas, ya que por ejemplo, si usamos una variable $user_ok como clave para el proceso de autentificación del usuario, nadie podrá falsificarla mediante la adición de una cadena a una url (http://www.sitio.net/login.php?user_ok=1), como podría hacer por el contrario con globals on
En cuanto a las variables que deben tomar su valor de una fuente externa al script, por ejemplo, la tipica variable $mail donde se almacena el email que nos proporciona el usuario, debemos acceder a ese valor mediante el empleo de $_GET['mail'] o $_POST['mail'], segun el sistema previsto de envio. Las ventajas son en primer lugar que $mail no puede ser directamente modificada. Y con $_GET y $_POST podemos saber, al menos, si el dato nos es remitido por el método get o post seleccionado por nosotros.
Usuarios que han visto este tema también han visto...
- Cómo hacer thumbnails de tus fotografías con PHP
- Calculando el tiempo que media entre dos timestamps en PHP
- Números aleatorios en PHP
- Subir archivos al servidor
- Funciones LDAP en PHP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.