Bloquear subida de PHP en uploads de WordPress
Bloquear PHP en uploads de WordPress reduce una vía común de ataque. Aprende cómo aplicarlo en Apache o Nginx y qué revisar después.
Bloquear PHP en uploads de WordPress es una medida de hardening muy útil para reducir una vía habitual de abuso: que un script acabe dentro de /wp-content/uploads y el servidor llegue a ejecutarlo. No sustituye las actualizaciones, la revisión de plugins ni otras capas de seguridad, pero sí puede dificultar bastante un compromiso cuando existe un vector de subida maliciosa.
En términos simples, consiste en impedir la ejecución de archivos PHP dentro de la carpeta de subidas. Su objetivo es que los ficheros multimedia sigan funcionando con normalidad, pero que esa ruta no pueda usarse como punto de entrada para código ejecutable.
Qué significa bloquear PHP en uploads de WordPress y por qué importa
WordPress utiliza la carpeta de subidas para guardar imágenes, documentos y otros archivos generados o enviados desde el panel. Por diseño, esa ubicación no debería servir para ejecutar lógica de aplicación. Cuando se habla de bloquear PHP en uploads de WordPress, se está hablando de una restricción a nivel de servidor para que un archivo con código PHP, aunque llegue a esa ruta, no se procese como script.
Esto importa porque muchos incidentes de malware WordPress aprovechan precisamente fallos en plugins, formularios o validaciones de subida para colocar ficheros ejecutables en rutas accesibles. Si el servidor no permite ejecutar PHP ahí, se reduce una parte de la superficie de ataque.
Qué riesgo reduce realmente esta medida y qué no resuelve por sí sola
La medida busca impedir la ejecución de PHP en uploads. Eso es distinto de otras tres cosas que conviene no mezclar:
- Restringir tipos de archivo: validar extensiones y MIME permitidos en formularios o plugins de subida.
- Endurecer permisos WordPress: ajustar permisos de archivos y carpetas para limitar escrituras innecesarias.
- Revisar vectores de entrada: corregir plugins vulnerables, integraciones mal diseñadas o formularios inseguros.
Por tanto, esta protección puede frenar una técnica frecuente, pero no corrige por sí sola un plugin vulnerable, no elimina puertas traseras ya existentes y no evita que un atacante abuse de otras rutas del sistema si ya tiene acceso.
Cómo bloquear la ejecución de PHP en uploads en servidores Apache
En entornos con servidor Apache, una vía habitual es aplicar la restricción sobre la carpeta /wp-content/uploads. En hosting compartido en España, esto suele hacerse mediante .htaccess uploads, pero solo si el proveedor permite overrides y la pila usa Apache de forma compatible.
Un ejemplo prudente y común consiste en denegar el tratamiento de archivos PHP en esa ruta. La sintaxis exacta puede variar según versión, módulos cargados y forma en que se ejecute PHP, por lo que conviene revisarla con el proveedor o en el vhost real antes de aplicarla.
# Ejemplo orientativo; revisar compatibilidad real en Apache
<FilesMatch "\.(php|phtml|php[0-9]?)$">
Require all denied
</FilesMatch>Si el servidor no permite .htaccess o usa una configuración gestionada, esta política puede necesitar aplicarse en la configuración principal del sitio. Es importante probar que las subidas de imágenes, miniaturas y medios siguen funcionando con normalidad.
Cómo aplicar la restricción en Nginx sin romper el sitio
En Nginx, la idea es la misma: denegar la ejecución de scripts dentro de la carpeta de subidas. La forma concreta depende de la estructura del bloque del sitio, del uso de PHP-FPM y del orden de las reglas location.
Como criterio general, conviene definir una restricción específica para /wp-content/uploads/ que evite pasar archivos PHP al manejador de PHP. La sintaxis exacta debe revisarse en la configuración real del servidor, especialmente en VPS gestionados o paneles que generan reglas automáticamente.
# Ejemplo orientativo; adaptar al bloque real del sitio
location ^~ /wp-content/uploads/ {
location ~ \.php$ { return 403; }
}Antes de recargar Nginx, conviene validar la configuración y comprobar que no se bloquean archivos legítimos ni se crean conflictos con reglas heredadas, algo especialmente importante si WordPress muestra 502 Bad Gateway en Nginx.
Qué revisar además: permisos, plugins, formularios y subida de archivos
Proteger wp-content/uploads tiene más sentido si se acompaña de otras comprobaciones básicas de seguridad WordPress:
- Revisar plugins, themes y núcleo actualizados.
- Comprobar que los formularios de subida validan extensión, tipo MIME y permisos de usuario.
- Ajustar permisos de sistema de archivos de forma prudente, evitando escrituras más amplias de lo necesario.
- Verificar si hay plugins que generan ficheros ejecutables fuera de las rutas esperadas.
- Mantener copias de seguridad y un plan de mantenimiento WordPress.
Esta combinación ayuda más que una única regla aislada, sobre todo en sitios con usuarios que suben archivos, e-commerce o formularios avanzados.
Errores frecuentes al endurecer uploads y cómo validarlos
Los fallos más habituales no suelen venir de la idea, sino de aplicarla sin revisar el entorno:
- Usar reglas de Apache en un servidor que realmente sirve el sitio con Nginx.
- Asumir que todos los hostings aceptan las mismas directivas.
- Bloquear extensiones o rutas sin comprobar si algún plugin depende de ellas.
- Confundir bloqueo de ejecución con bloqueo de subida.
Mini checklist de validación práctica:
- Subir una imagen y confirmar que se muestra bien en la biblioteca.
- Revisar logs del servidor tras aplicar la regla.
- Confirmar que no hay errores 500 ni conflictos con caché o CDN.
- Documentar el cambio para futuras tareas de soporte WordPress.
Cuándo conviene pedir soporte o una limpieza de malware WordPress
Si ya hay indicios de compromiso —archivos sospechosos, redirecciones, usuarios desconocidos, cambios en uploads o alertas del hosting— no basta con añadir una restricción y seguir adelante. En ese caso conviene una revisión técnica completa, y a menudo una limpieza de malware WordPress con análisis de archivos, cuentas, tareas programadas y puntos de persistencia.
También merece la pena pedir soporte WordPress si el sitio está en un entorno gestionado, si no tienes acceso al servidor o si necesitas aplicar el hardening sin afectar a producción.
Conclusión
Bloquear PHP en uploads de WordPress es una medida sensata para reducir una vía común de ejecución de código en la carpeta de subidas. Funciona mejor como parte de un enfoque más amplio de hardening WordPress: configuración del servidor, permisos prudentes, revisión de plugins y control de formularios o archivos subidos por usuarios.
Si no tienes claro cómo encaja en tu hosting compartido, VPS gestionado o configuración actual, el siguiente paso razonable es una auditoría breve de hardening. Y si ya observas señales de infección, conviene priorizar soporte técnico y limpieza antes de dar el problema por cerrado.
Fuentes oficiales
¿Necesitas orientación personalizada?
Te ayudamos a entender tus opciones y el siguiente paso.