El archivo functions.php
de WordPress, junto con otros ficheros PHP críticos como wp-config.php
, wp-settings.php
o index.php
, conforman el núcleo funcional del sistema. Estos archivos gestionan la carga del tema, la configuración del sitio, las rutas internas y hasta el comportamiento del sistema de autenticación. Por ello, protegerlos es clave para garantizar la seguridad de una instalación WordPress frente a ataques externos o modificaciones maliciosas.
En este artículo, se describen las mejores prácticas para reforzar la seguridad de estos archivos y evitar que se conviertan en puerta de entrada de ciberdelincuentes.
¿Por qué es importante proteger functions.php
?
El archivo functions.php
es parte esencial de cada tema de WordPress. En él se añaden funciones personalizadas, se conectan hooks (acciones y filtros), y se registran scripts o estilos. Un atacante que consiga acceso a este archivo podría insertar código malicioso (como shells, redirecciones o funciones de exfiltración de datos).
Este riesgo se amplifica en instalaciones con plugins de edición directa desde el panel de administración o con permisos de archivos mal configurados.
1. Restringir el acceso a archivos desde el navegador
Una de las medidas más efectivas para proteger archivos PHP es bloquear el acceso directo a ellos desde el navegador. Esto se puede hacer fácilmente con reglas en .htaccess
para servidores Apache o nginx.conf
si se usa NGINX.
Ejemplo para .htaccess
:
<FilesMatch "(functions\.php|wp-config\.php|wp-settings\.php|wp-load\.php)">
Order Allow,Deny
Deny from all
</FilesMatch>
Esta directiva evita que un visitante pueda cargar directamente esos archivos desde la URL.
2. Evitar la edición desde el panel de administración
WordPress permite por defecto editar archivos del tema y del plugin desde el administrador (Apariencia > Editor de archivos). Esta funcionalidad supone un riesgo.
Desactivación en wp-config.php
:
define('DISALLOW_FILE_EDIT', true);
Esto bloquea el editor visual y reduce significativamente las posibilidades de modificación malintencionada.
3. Establecer permisos seguros de archivos y carpetas
Una mala configuración de permisos puede dejar los archivos del core expuestos a escritura o ejecución indebida.
- Archivos PHP críticos:
644
- Directorios:
755
wp-config.php
:600
o640
(según el entorno)
Ajustar estos permisos puede hacerse manualmente o mediante comandos:
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 600 /var/www/html/wp-config.php
4. Usar un plugin de seguridad con reglas de hardening
Herramientas como Wordfence, iThemes Security o All In One WP Security & Firewall permiten aplicar reglas de endurecimiento (hardening) específicas para proteger archivos del núcleo. Entre sus funciones se incluyen:
- Protección contra escritura de archivos sensibles
- Monitorización de cambios en
functions.php
- Alerta por ejecución sospechosa de código PHP
Estas soluciones ofrecen una protección adicional automatizada con escaneos periódicos.
5. Activar la protección contra ejecución de PHP en directorios críticos
Muchos ataques cargan archivos PHP en carpetas como /uploads
, /wp-includes
o /wp-content/themes/nombre-tema
. Para evitar que se ejecuten scripts maliciosos, se puede bloquear la ejecución PHP en estas ubicaciones.
Para Apache:
Crear o editar .htaccess
en /wp-content/uploads/
:
<Files *.php>
deny from all
</Files>
Para NGINX:
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
}
6. Monitorizar modificaciones en tiempo real
El uso de herramientas como Tripwire
, OSSEC
o el plugin gratuito «WP File Monitor Plus» permite notificar cambios en archivos clave como functions.php
, wp-config.php
o index.php
.
Además, se recomienda usar control de versiones con Git en entornos de desarrollo y despliegue controlado mediante CI/CD para limitar errores manuales y mantener un historial de modificaciones.
7. Autenticación de doble factor y control de usuarios
Aunque no afecta directamente a los archivos PHP, limitar quién puede acceder al administrador de WordPress es esencial. Implementar autenticación en dos pasos (2FA) y minimizar el uso de usuarios con privilegios de administrador reduce el riesgo de que alguien con acceso pueda modificar functions.php
.
Conclusión
La protección del archivo functions.php
y de otros ficheros PHP críticos es un paso esencial en cualquier estrategia de seguridad para WordPress. A través de un enfoque combinado —bloqueo de acceso, configuración adecuada de permisos, desactivación de editores, monitorización y endurecimiento del servidor— se puede reducir drásticamente el riesgo de intrusiones y compromisos del sistema.
Invertir tiempo en estas medidas preventivas es más rentable que reparar un sitio hackeado o exponer datos sensibles de los usuarios.
