VULNERABILIDADES DE APLICACIONES WEB: CÓMO PREVENIR LA INYECCIÓN DE COMANDOS (II)

19.02.2018 15:50
 
La forma más eficaz de prevenir la Inyección de comandos en PHP es la de deshabilitar las funciones de ejecución de comandos en el archivo php.ini, pero deberá tenerse presente que el archivo que contenga la función deshabilitada no se ejecutará o su ejecución se detendrá y se mostrará un mensaje de error con una advertencia sobre la razón de la falta de ejecución.
 
Para deshabilitar funciones de PHP se abre php.ini y en 
 
disable_functions=
 
se agrega las funciones que se desea deshabilitar:
 
disable_functions=exec,system,passthru,shell_exec,popen,proc_open,pcntl_exec 
 
Las comillas invertidas (``, backticks en inglés) quedarán deshabilitadas al incluir la función shell_exec.
 
Podría aprovecharse para incluir la función "eval" y eventualmente "assert", aunque esta última podría ser usada en un script en producción. Deshabilitando estas dos funciones se reduciría el riesgo de la Inyección de código PHP evaluado dinámicamente.
 
Otras funciones que convendría considerar son phpinfo; highlight_file; get_current_user; getlastmod; filemtime; disk_free_space y disk_total_space que pueden ser una vulnerabilidad si alguno de los datos devueltos es visible para un atacante. 
 
La lista podría continuar pero no queremos dar una receta que será útil para algunos y para otros podría constituir un dolor de cabeza. Algunos querrán deshabilitar más funciones y otros menos. Cada uno deberá elaborar su propia lista según su mejor criterio. 
 
Artículos relacionados: