Blog de Gonzalo

Blog de programación de Gonzalo López

SECURIZAR PHP

PHP

Hay varias opciones, que son bastante sencillas que sirven para securizar php. Todas las opciones que pongo en este post hay que hacerlas en el fichero de configuración php.ini y hay que tener permisos de root para poder abrirlo y guardado. Una vez modificado el fichero de configuración php.ini hay que reiniciar el php y el apache. Las más sencillas son:

  • expose_php Consiste en ocultar la versión de php y hay que buscar la opción expose_php y ponerla a Off. Después de este cambio, php no agregará su firma (signature) a las cabeceras (header) del servidor web. Esto no hará que tu servidor sea más seguro, simplemente evitará que mediante acceso remoto alguien pueda darse cuenta que php está instalado en el servidor y su versión.
  • Funciones peligrosas Hay algunas funciones que pueden llegar a suponer un riesgo para la seguridad del servidor. Para deshabilitarlas hay que buscar la opción disable_functions y escribir entre comillas y separadas por comas las funciones a dehabilitar. Las más comunes para ser dehabilitadas son: system, system_exec, passthru, shell, shell_exec, exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, pfsockopen, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg, phpinfo.
  • session.use_trans_sid
  • Consiste en desahbilitar las sesiones y así evitar simular una sesión activa en el servidor. Hay que buscar la opción session.use_trans_sid y ponerla a Off.
  • register_globals
  • En si no es varible peligroso, sino que el peligro es el uso inapropiado de ella, ya que inserta scripts con toda clase de variables, como por ejemplos las que proceden de formularios HTML. Hay que buscar la opción register_globals y ponerla a Off.
  • Desactivar acceso a URL remotas en funciones de manejo de ficheros Yo lo he hehco varias veces aunque no es una forma limpia de acceder a una web para obtener su contenido. Esta medida evita que las funciones include, fopen o file_get_contents, ésto puede provocar graves errores de seguridad invocando a scripts maliciosos que se encuentran fuera del servidor y su ejecución remota. Hay que buscar la opción allow_url_fopen y ponerla a Off.
  • Safe Mode Activar safe_mode implica que los scripts PHP únicamente pueden acceder a los ficheros que tienen como propietario el mismo que ellos. De este modo evitamos por ejemplo que tengan acceso de lectura a ficheros de sistema como /etc/passwd entre otros. Hay que buscar la opción safe_mode y ponerla a On. Pero ésto puede ser un problema en el momento que se necesita acceder a información generada por otros usuarios en el sistema (ficheros de otras aplicaciones por ejemplo). En este caso hay que buscar la opción safe_mode y ponerla a Off y buscar la opción safe_mode_gid y ponerla a On.
  • Registro de errores Hay que ocultar los errores por pantallas y que se guarden en un log para ello hayq eu modificar tres directivas que hay que buscar display_errors y ponerla a Off, log_errors = y ponerla a On>/strong>,error_log y poner la ruta a donde irá el log.
  • enable_dl Esta variable se usa solamente en conjunto con el servidor Apache. Sirve para activar o desactivar la carga dinámica de extensiones php con dl() por servidor virtual o directorio. Con la carga dinámica, es posible ignorar todas las restricciones open_basedir. Hay que buscar la opción enable_dl y ponerla a Off.
Con estos consejos no sería suficiente pero por lo menos sirve para empezar a securizar un proyecto.

Compartir en twitter