Iloo

https://iloo.wordpress.com

Archivos por Etiqueta: log

PHP: tips, limpiar el codigo

0fd309979dce4933f1ae8fc364a9febe

Si bien los mensajes de tipo warning o notice no causando problemas “reales” en el funcionamiento de una aplicación o al menos la mayoría piensa eso, la realidad es que si causan problemas y bastante serios.

En primer lugar para cualquier aplicación se tiene que habilitar el registro de logs, la importancia de eso lo dejo para otro post, cuando este archivo es demasiado grande (experiencia propia) ocasiona que el servidor y por tanto la aplicación funcionen mas lentos de lo normal. A demás es una de las razones para el famoso 500 Internal Server Error.

Algunas alertas comunes son las siguientes:

PHP Notice: Undefined index: var1 in …

Obviamente se esta buscando el index en un array o una variable enviada por get o post que no existe.

por ejemplo este error se reproduciria de la siguiente manera:

$var_array = array('var2' => 2, 'var3' => 3);
echo $var_array['var1'];

O el mas común que el archivo espere recibir datos enviados mediante get o post y que estos no hayan sido enviados. Por ejemplo:

if($_GET['var1'])
  echo 'yes';

Si var1 no fue enviada por el método get en este caso produciría la alerta.

Para esto es mejor verificar antes si la variable esta “seteada”

if(isset($_GET['var1']) && $_GET['var1'])
  echo 'yes';

PHP Notice: Undefined variable: var2 in …

Muchas veces vi que código de esta manera:

if ($a == 1)
  $b = 2;
echo $b;

Pero en el caso que la variable $a sea igual a 2 entonces la variable $b nunca seria inicializada, una solución es definir la variable antes:

$b = 0;
if ($a == 1)
  $b = 2;
echo $b;

Esto también pasa cuando se usa un array sin haber sido inicializado, por ejemplo:

foreach($orders as $order)
  $var_array[] = $order;
print_r($var_array);

La solución seria tan simple como definir la variable antes de usarla.

$var_array = array();
 foreach($orders as $order)
 $var_array[] = $order;
print_r($var_array);

PHP Notice: Use of undefined constant var3 – assumed ‘var3’ in …

Este es un clásico, la regla es: si el index de un array es un entero no se necesita comillas, si es una cadena si necesita comillas.

echo $array[0]; // bien
echo $array['0']; // bien
echo $array['index']; // bien
echo $array[index]; // MAL

PHP Notice: A session had already been started – ignoring session_start() in …

Si la sesion ya ha sido iniciada no es necesario volver a iniciarla. Si uno no esta seguro de haber iniciado la sesión mejor verificar antes de iniciarla:

if(!isset($_SESSION)) 
  session_start();

Estos son algunas sugerencias para arreglar y limpiar los warnings y notices en el log de php.

Apache: bad user name ${APACHE_RUN_USER} (2)

 

De nuevo con este error, pero ahora la cosa es que si ya hicimos lo mencionado en:

Apache: bad user name ${APACHE_RUN_USER} (1)

Y al iniciar el servicio de apache aparece lo siguiente:

(2)No such file or directory: apache2: could not open error log file /etc/apache2/${APACHE_LOG_DIR}/error.log.Unable to open logs

Entonces si dejamos el archivo apache2.conf sin modificar es decir con los parámetros iniciales:

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

Y en consola ejecutamos:

sudo apache2ctl start

Tendríamos que tener el servicio de apache funcionando =)

SO: Kubuntu 10.10

Web Applications Security: www.coteor.net.bo (1)

Este post no es tanto una prueba de seguridad más bien la notificación de un bug de seguridad bueno uno enorme, inicialmente intente comunicar de esto a la empresa, pero no encuentro ningún correo de contacto en su sitio (o_O), ni tampoco en la guía telefónica y eso que esta empresa brinda el servicio de Internet, telefonía, cable, etc, bueno ya lo dice su nombre Cooperativa de Telecomunicaciones Oruro (www.coteor.net.bo).

Pero vayamos al grano el bug o agujero de seguridad se encuentra en la aplicación para el seguimiento de horas en el servicio dial-up (si, la empresa ofrece servicio dial-up, y a precios demasiado altos y ni siquiera cuenta con un plan ilimitado), la aplicación encargada del registro se llama Orion (o al menos eso supongo) desarrollada por la empresa Solintec (cosa que también supongo, por el nombre de la dirección y los banner’s) y se encuentra en http://orion.coteor.net.bo/orion/usuarios/

La cosa es que esta aplicación genera logs en una dirección que cualquier persona tiene acceso, estos log’s se generan cada hora durante todo el día, y almacenan información delicada de las cuentas (nombre de usuario y contraseña a demás que no están codificadas ni cifradas) también información de la persona que se conecta (línea telefónica, fecha y hora).

Se puede apreciar todo esto en la imagen anterior (ojo que los datos ya no sirven ya que todos son de las tarjetas prepago del mes de enero, tal vez alguien pueda hacer un generador de cuentas y contraseñas XD)

Ya con estos datos y un programa para ocultar o cambiar el id telefónico uno ya podría empezar a usar la cuenta de acceso a internet de otro usuario (aunque sea dial-up).

Algunos datos interesantes que se pueden encontrar (a parte de los datos de acceso) son:

  • Cuentas de administrador, obvios: admin y administrador con sus respectivas contraseñas.
  • También para las personas que tienen contratado un plan estos datos son los mismos que se usan para acceder las cuentas de correo electrónico.
  • Siempre hay personas despistadas que ingresan sus datos de otros correos por ejemplo: hotmail, yahoo, gmail cosa que no ingresa ya que es otro servidor de correo pero estos datos son almacenados por la aplicación y guardados en los archivos log’s.

La recomendación es clara, arreglar el bug de la aplicación ya que los datos (privados) de toda una ciudad son visibles a cualquier persona que de con la dirección donde se almacenan estos datos.