Seguridad Php (I)

Valoración del artículo:
PHP es una lengua muy fácil a aprender, y muchos programadores lo aprenden como manera de agregar interactividad a sus Sitio Web.
Publicado: 28/8/07
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Desafortunadamente, eso significa a menudo los programadores de PHP, especialmente ésos más nuevos al desarrollo web, cometen ciertos riesgos de seguridad y desaprovechan el potencial que sus usos pueden contener. Aquí están algunos de los problemas mas comunes de seguridad y cómo evitarlos.

Regla número uno: Nunca, confiar en los usuarios

Nunca debes confiar en que los usuarios te van a mandar los datos que tu esperas. Mucha gente responde a esto con algo como“Oh, nadie estaría interesado en mi sitio”. Esta afirmación no podría ser mas incorrecta , siempre hay un usuario malévolo que quiere explotar un agujero de seguridad ademas los problemas pueden presentarse fácilmente debido a un usuario que hace algo mal inintencionalmente.

Por todo esto la regla de todo desarrollador web tiene que ser "Nunca, confiar en los usuarios" . Asumir que cada pieza de datos que tu sitio recoge de un usuario puede convertirse en un agujero de seguridad, siempre. Si la seguridad de tu sitio web es importante para ti, este un buen puntopara comenzar a aprender. Sería conveniente tener “una hoja de seguridad para PHP” al lado de tu escritorio con los puntos mas importantes en texto negrita grande.

Variables globales

En muchas lenguajes debes crear explícitamente un variable para utilizarlas. En PHP, hay una opción, las “register_globals”, que puedes fijar en php.ini y que permite que utilices variables globales.

Considera el código siguiente:

if ($password == "my_password") {

$authorized = 1;

}

if ($authorized == 1) {

echo "Mis cosas importantes ";

}


A muchos de vosotrosos puede parecer que este código esta funcionando perfectamente. ¿Sin embargo, si un servidor tiene “register_globals” encendidos, entonces simplemente agregando”? authorized=1 " al URL dará a cualquier persona el acceso libre a exactamentelo que no quisieras que todo el mundo viera. Éste es uno de los problemas mas comunes de la seguridad de PHP.

Afortunadamente, esto tiene un par de soluciones simples y posibles. La primera, y quizás la mejor, es fijar desactivar “register_globals”. La segunda es asegurarse de que utilizas solamente las variables que has fijado explícitamente tú mismo. En el ejemplo anterior, eso significaría la adición “$authorized = 0; ” al principio de la escritura:

$authorized = 0;

if ($password == "my_password") {

$authorized = 1;

}

if ($authorized == 1) {

echo "Lots of important stuff.";

}


Mensajes de error

Los mensajes de error son una herramienta muy útil para los programadores y hackers. Un desarrollador los necesita para detectar bugs. Un hacker puede utilizarlos para descubrir todas las clases de información sobre un sitio, desde la estructura del directorio del servidor a la información de la conexión de la base de datos.En PHP para evitar esto puedes utilizar .htaccess o php.ini, fijando “error_reporting” a “0”.

Comentarios
Fueron enviados 2 comentarios al artículo
2 comentarios revisados:
Por: pakos
03/9/07
Saludos!.. un comentario respecto a la uso de variables globales para los script, pues creo que como comentas es inseguro, ahora dejas muy de lado la solucion mas bialble y desde el punto de vista de Zend la solucion mas acertada que es el usuo de los arreglos superglobales, que son arreglos incluidos despues de que se dasablidto globar_reguiter por defecto, esto para saber de donde realmente viene una variable, en lo personal creo que es un muy mala practica usar las valiables globales dan vastante problemas desde segurdiad hasta de funcionalidad, para mas detalles pueden consultar la pagina oficial de php
http://es.php.net/manual/es/security.globals.php
http://es.php.net/manual/es/language.variables.predefined.php

y creo que es preferente decartar el usuo de las variables globales en su lugar usar los array subperglobales $_POST, $_GET, $_SESSION etc, incluso el codigo es mas leguible por que sabemos desde lectura dedonde provienen las valiables, y creo se me hace muy iresponsable seguir enseñando una vieja tecnica, se diran activos la variables y listo, pero eso no siempre es viable por que muchas veces no somo el administrador del servidor y tenemos que hacer tramites burrocraticos y muchas veces se no será negado así que mejor no usar lo que nos dicen que no usemo (esto lo dice Zend x algo desactivo register_blobal y lo dejo solo para soportar los viejos scripts)
Por: Manumene
07/9/07
Muy bueno el tutorial..
Gracias fenómeno!

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo