Declaración de variables y seguridad

 Son muchos los lenguajes de programación en los cuales no es necesario declarar las variables antes de que estas sean usadas. Si escribes tus códigos en un lenguaje que resulte flexible en este aspecto que te explico, y dispones de la posibilidad de configurarlo de modo que sea obligatorio declarar las variables antes de usarlas, ¡es mejor que no dejes de hacerlo!. Te muestro un código en PHP a modo de ejemplo:

if ($tipo_usuario_logado == administrador)
{
  $administrador = TRUE;
}


La variable $administrador se autodeclara con su primer uso, y a partir de ahora nuestro código mostrará condicionales de este tipo:

if ($administrador)
{
  // Muestra opciones propias del administrador
}


¿Que ocurriría si un hacker usara un campo de introducción de datos de nuestra aplicación PHP, que estuviera mal diseñado en lo referente a la seguridad, para introducir una porción de código como el siguiente?:

$administrador = TRUE;

  Pues eso es lo que ocurriría exactamente, que la variable sería recibida por nuestra aplicación, y a continuación la declararía y le daría el valor TRUE. A partir de este momento mostraría las características de la aplicación reservadas para los administradores y todas nuestras vergüenzas quedarían expuestas. ¡Observa que incluso podría, en el caso de que estén activas las variables globales, usar maliciosamente la URL de nuestra aplicación con esta finalidad!

http://servidor/aplicación?administrador=TRUE

 Por todo lo expuesto, es conveniente usar la instrucción error_reporting() en el caso anterior para capturar errores con variables no inicializadas y poder manejar esos errores según nuestra necesidad.
 Si has pensado que sería mucho más fácil manipular la variable $tipo_usuario_logado, la cual damos por hecho que ya está declarada en nuestra aplicación, he de decirte que hay un pequeño hacker en tu interior. Es cierto, y por este motivo es importante que en cada interpretación del código que haga el servidor asignes el valor de esta variable desde, por ejemplo, una consulta a la base de datos de tus usuarios, o que lo realices usando los datos de sección que previamente has almacenado en el servidor. Sólo de esta manera, el gran especialista de seguridad que crece en ti se asegurará de mantener controlado a tu travieso hacker interior.