Seguridad y SSL

Restringir funciones de PHP sin romper la aplicación

Revisado el 2 min de lectura seguridad web php

PHP incluye funciones que permiten ejecutar procesos, abrir conexiones o interactuar con el sistema. Algunas aplicaciones las necesitan y otras no.

disable_functions puede reducir lo que un código PHP ya ejecutado es capaz de hacer, pero no corrige una vulnerabilidad ni sustituye las actualizaciones, el aislamiento, el mínimo privilegio o la investigación de una intrusión.

En cPanel > Seleccionar versión de PHP > Options, busca disable_functions, si el selector lo permite. Confirma la versión y el ámbito al que se aplica; varias webs pueden compartir esa configuración.

No borres la configuración existente ni copies una lista genérica. Anota su valor actual y desactiva únicamente las funciones que hayas comprobado que la aplicación no necesita. Como punto de partida para una aplicación que no ejecuta procesos del sistema, puedes evaluar individualmente funciones como:

exec,passthru,proc_open,shell_exec,system

No incluyas eval: es una construcción del lenguaje y disable_functions no puede desactivarla. Tampoco desactives funciones de red, ficheros, procesos o registro sin revisar antes las dependencias y tareas programadas de la aplicación.

Después de cada cambio, revisa el funcionamiento completo de las webs, tareas programadas y procesos de mantenimiento. Si una función es necesaria, vuelve a habilitarla y aplica un control adecuado en otra capa.

Comprueba por separado tareas web y comandos de consola, que pueden usar configuraciones PHP distintas. No intentes cambiar esta directiva mediante ini_set() dentro de la aplicación: PHP la trata como una configuración del sistema.

Desde PHP 8, una función deshabilitada deja de estar definida y el código de usuario puede definir otra con ese nombre. Por eso no debe interpretarse como una barrera suficiente de aislamiento. La documentación de PHP explica sus límites.

También te puede ayudar

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.