Blog de tecnologia
Como deshabilitar funciones en PHP (Seguridad)
Una punto interesante para hacer mas segura nuestra instalación de PHP es deshabilitar las funciones consideradas mas peligrosas en php siempre y cuando nuestras aplicaciones no las utilicen.
Esto es muy simple de hacer desde el archivo php.ini mediante la directiva disable_functions. El primer paso para realizar esto es localizar el archivo php.ini que esta usando nuestro php. Para esto usamos el siguiente comando logueado como root o si corresponde usando sudo (Ubuntu, Debian o similar)
find / -name php.ini
Supongamos en nuestro ejemplo que estuviera en /etc/php5/apache2/php.ini procedemos a editarlo con nuestro editor favorito por ejemplo.
gedit /etc/php5/apache2/php.ini
Una vez en el editor buscamos la directiva disable_functions y la reemplazamos por lo siguiente
disable_functions =”phpinfo”
En caso de no encontrar la directiva la agregamos al final del archivo. Entre las comillas colocaremos la lista separada por comas de las funciones que queremos deshabilitar. En este caso deshabilitamos phpinfo pero podría deshabilitarse cualquiera.
Si ejecutamos la función desde un script de php el mensaje de error es por demás claro así que fácilmente nos daremos cuenta si deshabilitamos algo demás
Warning: phpinfo() has been disabled for security reasons in /var/www/index.php on line 2
Encontramos en internet listas de funciones mas “conservadoras“
disable_functions =”apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode”
o mas “arriesgadas“
disable_functions =”system, passthru, escapeshellarg, escapeshellcmd, proc_close,proc_open, ini_alter, popen, show_source, pcntl_exec”
pero tendremos que analizar bien en cada caso cuales decidimos deshabilitar. No obstante es una practica muy recomendable ya que las funciones mas peligrosas son las que casi nunca se usan.
disable_functions ="system,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,pcntl_exec"
| Imprimir artículo | Este artículo fue publicado por admin el 19/02/2010 a las 00:03, y está archivado en Destacados, PHP, Seguridad. Sigue las respuestas a esta entrada a través de RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio. |