Webmaster Libre

Desarrollo web con software libre

Buscador

Asegurando una instalación de PHP

Cuando instalamos PHP este viene con una serie de valores por defecto que no lo hacen adecuado para un sitio en producción y puede provocar que utilicemos técnicas inseguras. Todo esto puede solucionarse si ponemos en práctica el listado de tareas que debemos realizar antes de abrir el sitio al gran público que nos deja Ayman Hourieh.

  1. Deshabilitar las URL remotas para funciones que manejen archivos:
    1. allow_url_fopen = Off
  2. Register Globals
    1. register_globals = Off
  3. Restringiendo lo que PHP puede leer o escribir
    1. open_basedir = /var/www/htdocs/files
  4. Safe Mode
    1. safe_mode = Off
    2. safe_mode_gid = On
  5. Límites para los tiempos de ejecución
    1. max_execution_time = 30 ; Max script execution time
    2. max_input_time = 60 ; Max time spent parsing input
    3. memory_limit = 16M ; Max memory used by one script
    4. upload_max_filesize = 2M ; Max upload file size
    5. post_max_size = 8M ; Max post size
  6. Limitar el acceso a ciertos tipos de archivos mediante directivas de Apache
    1. <FilesMatch "\.(inc|.*sql|.*~)$">
    2. Order allow,deny
    3. Deny from all
    4. </FilesMatch>
  7. Mensajes de error y logging
    1. display_errors = Off
    2. log_errors = On
  8. Ocultar la presencia de PHP
    1. expose_php = Off

Resumen

Todos los cambios realizados quedan concretados en un php.ini tal que así:

  1. ; php.ini
  2. allow_url_fopen = Off ; Disable URLs for file handling functions
  3.  
  4. register_globals = Off ; Make sure this hellish fiend is dead
  5.  
  6. open_basedir = /var/www/htdocs/files ; Restrict file handling functions to a subdirectory
  7.  
  8. safe_mode = Off ; Disable this, the next is often more practical
  9. safe_mode_gid = On ; Enable safe mode with group check
  10. safe_mode_exec_dir = /var/www/binaries ; Restrict execution functions to this directory
  11. safe_mode_allowed_env_vars = PHP_ ; Restrict access to environment variables
  12.  
  13. max_execution_time = 30 ; Max script execution time
  14. max_input_time = 60 ; Max time spent parsing inputs
  15. memory_limit = 16M ; Max memory size used by one script
  16. upload_max_filesize = 2M ; Max upload file size
  17. post_max_size = 8M ; Max post size
  18.  
  19. display_errors = Off ; Do not show errors on screen
  20. log_errors = On ; Log errors to log file
  21.  
  22. expose_php = Off ; Hide presence of PHP

Y un archivo .htaccess o parte de la configuración de Apache

  1. # Apache configuration or .htaccess
  2. <FilesMatch "\.(inc|.*sql|.*~)$">
  3. Order allow,deny
  4. Deny from all
  5. </FilesMatch>

Más información y explicaciones en el artículo original, en inglés: Checklist for Securing PHP Configuration

Otras entradas

Esta entrada fue publicada por Alma Fernández el Viernes, 6 de Octubre de 2006 y está archivada en: PHP. Puedes dejar un comentario, o enviar un trackback desde tu sitio.

2 Comentarios

Agrega el tuyo
  1. Asegurando una instalación de PHP…

    Cuando instalamos PHP este viene con una serie de valores por defecto que no lo hacen adecuado para un sitio en producción y puede provocar que utilicemos técnicas inseguras, si quieres parametrizar algo a tu medida, puedes seguir este mini HOW-TO pa…

    meneame.net 6 Octubre, 2006

  2. [...] Mas acerca de: Webmasterlibre Configura tu PHP de forma segura checklist for securing php configuration checklist for securing php configuration [...]

    Mis Algoritmos » Blog Archive » Configurando PHP de forma segura 13 Octubre, 2006

Comentar:

Algunas etiquetas HTML permitidas:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Blogalaxia BlogESfera - Directorio de Blogs Hispanos Web Developement Blogs - BlogCatalog Blog Directory