Apache / Intermedio / 4 min
Bloquear PHP en /uploads y proteger wp-config
Impide que un PHP malicioso subido a la carpeta de medios se ejecute y blinda archivos sensibles desde .htaccess.
Una de las vías de ataque más comunes en WordPress es subir un .php disfrazado a través de un plugin o formulario vulnerable y ejecutarlo desde wp-content/uploads. Como esa carpeta solo debería contener imágenes y documentos, no hay razón para permitir PHP allí. Este .htaccess corta esa ejecución y, de paso, bloquea el acceso directo a archivos sensibles como wp-config.php.
Guía de Implementación Paso a Paso
- Este snippet es para servidores Apache. Si usas Nginx, la lógica se traslada a bloques
location. - Con un editor de archivos o FTP, crea o edita el archivo
.htaccessdentro dewp-content/uploads/. - Pega el primer bloque de código ahí.
- Luego abre el
.htaccessde la raíz de WordPress y pega el segundo bloque al principio. - Guarda ambos y comprueba que el sitio carga con normalidad y que las imágenes se ven bien.
# --- Archivo: wp-content/uploads/.htaccess ---
# Impedir la ejecución de PHP en la carpeta de medios
<FilesMatch "\.(?i:php|php3|php4|php5|php7|phtml|pht)$">
Require all denied
</FilesMatch>
# --- Añadir al .htaccess de la raíz de WordPress ---
# Bloquear acceso directo a archivos sensibles
<FilesMatch "^(wp-config\.php|\.htaccess|\.user\.ini|readme\.html|xmlrpc\.php)$">
Require all denied
</FilesMatch>
Prueba siempre en un entorno de staging primero: algunos plugins legítimos (raros) generan PHP en subcarpetas de uploads. Si algo deja de funcionar, revisa qué plugin lo necesita antes de quitar la regla. Combinado con permisos de archivo correctos (644 para archivos, 755 para carpetas), esto cierra una de las puertas favoritas de los atacantes.
