Encontrar un archivo PHP extraño en tu carpeta de subidas de WordPress puede ser alarmante. Conocemos bien esta sensación porque hemos ayudado a cientos de usuarios que han descubierto el mismo problema.
Esto a menudo apunta a una brecha de seguridad que muchas personas pasan por alto. Los hackers pueden abusar de directorios escribibles para subir scripts maliciosos que les dan acceso de puerta trasera a tu sitio web.
La buena noticia es que hay una forma sencilla de bloquear uno de sus métodos de ataque favoritos. Al deshabilitar la ejecución de PHP en carpetas específicas, haces que tu sitio sea un objetivo mucho más difícil.
Te mostraremos exactamente cómo hacer esto paso a paso. Vamos a repasar cómo agregar esta importante capa de seguridad a tu sitio de WordPress.

¿Por qué deshabilitar la ejecución de PHP en ciertos directorios de WordPress?
Por defecto, WordPress hace que ciertos directorios sean escribibles para que usted y otros usuarios autorizados en su sitio web puedan cargar fácilmente temas, plugins, imágenes y videos a su sitio web.
Sin embargo, esta capacidad puede ser mal utilizada si cae en las manos equivocadas, como hackers que pueden usarla para cargar archivos de acceso de puerta trasera o malware en su sitio web de WordPress.
Estos archivos maliciosos a menudo se disfrazan de archivos principales de WordPress. Están escritos principalmente en PHP y pueden ejecutarse en segundo plano para obtener acceso completo a todos los aspectos de su sitio web.
Suena aterrador, ¿verdad?
No te preocupes. Hay una solución fácil para eso. Simplemente deshabilita la ejecución de PHP en ciertos directorios donde no la necesites. Al hacerlo, ningún archivo PHP se ejecutará dentro de esos directorios.
Veamos cómo mejorar la seguridad de WordPress deshabilitando la ejecución de PHP usando el archivo .htaccess.
Deshabilitar la ejecución de PHP en ciertos directorios de WordPress usando el archivo .htaccess
La mayoría de los sitios de WordPress tienen un archivo .htaccess en la carpeta raíz. Este es un archivo de configuración utilizado por Apache, uno de los tipos de software de servidor web más populares. (Si tu host usa un servidor diferente como Nginx, no te preocupes, lo cubrimos en la sección de Preguntas Frecuentes a continuación).
Este potente archivo de configuración se utiliza para proteger con contraseña el área de administración, deshabilitar la navegación por directorios, generar una estructura de URL amigable para SEO y más.
Por defecto, el archivo .htaccess se encuentra en la carpeta raíz de tu sitio web de WordPress, pero también puedes crear y usar archivos .htaccess adicionales dentro de tus directorios internos de WordPress.
Para proteger tu sitio web de archivos de acceso de puerta trasera, necesitas crear un archivo .htaccess y subirlo a los directorios /wp-includes y /wp-content/uploads de tu sitio. Proteger la carpeta /wp-content/uploads es especialmente importante, ya que este es el lugar más común donde los hackers intentan colocar scripts maliciosos.
Simplemente crea un nuevo archivo en tu computadora usando un editor de texto como el Bloc de notas (en Windows) o TextEdit (en Mac). Luego, guarda el archivo vacío con el nombre .htaccess
Ahora, copia y pega el siguiente código en tu archivo .htaccess:
<Files *.php>
Require all denied
</Files>
Este código le indica a tu servidor que bloquee cualquier intento de ejecutar directamente un archivo que termine en .php desde dentro de esta carpeta. Una vez que hayas pegado el código, guarda el archivo.
A continuación, debes subir este archivo a las carpetas /wp-includes y /wp-content/uploads en tu servidor de hosting de WordPress.
Puedes subirlo usando un cliente FTP o la aplicación Administrador de archivos en el panel de control cPanel de tu cuenta de hosting.

Una vez que se agregue el archivo .htaccess con el código anterior, impedirá que se ejecuten scripts PHP en estos directorios.
Búsqueda de puertas traseras en WordPress usando Sucuri
Usar este truco de .htaccess te ayuda a fortalecer la seguridad de tu WordPress, pero no solucionará un sitio de WordPress que ya ha sido hackeado.
Las puertas traseras están ingeniosamente disfrazadas y ya pueden estar ocultas a simple vista.
Si deseas verificar posibles puertas traseras en tu sitio web, entonces necesitas activar Sucuri en tu sitio web.

Sucuri es el mejor plugin de seguridad de WordPress del mercado. Escanea tu sitio web en busca de posibles amenazas, código sospechoso, malware y vulnerabilidades.
También bloquea eficazmente la mayoría de los intentos de hackeo antes de que lleguen a tu sitio web al agregar un firewall entre tu sitio y el tráfico sospechoso.
Lo más importante es que, si tu sitio de WordPress es hackeado, lo limpiará por ti. Para obtener más información, puedes leer nuestra reseña de Sucuri porque hemos estado usando su servicio durante años.
Puedes aprender más en nuestra guía sobre cómo encontrar y solucionar puertas traseras en un sitio de WordPress hackeado.
Preguntas frecuentes sobre cómo deshabilitar la ejecución de PHP
Aquí tienes algunas de las preguntas más comunes que recibimos sobre cómo fortalecer la seguridad de WordPress deshabilitando la ejecución de PHP en ciertos directorios.
1. ¿Qué es un archivo .htaccess y dónde se encuentra?
El archivo .htaccess es un archivo de configuración del servidor utilizado por los servidores web Apache. En WordPress, controla cosas como la estructura de las URL de tu sitio web y se puede usar para agregar reglas de seguridad. Normalmente, puedes encontrarlo en la carpeta raíz principal de tu instalación de WordPress.
2. ¿Deshabilitar la ejecución de PHP en la carpeta de subidas romperá mi sitio web?
No, esta medida de seguridad no debería afectar el funcionamiento normal de tu sitio web. Los directorios wp-content/uploads y wp-includes no están diseñados para contener archivos PHP que se ejecuten directamente. Tus temas y plugins guardan sus archivos necesarios en carpetas separadas donde la ejecución de PHP todavía está permitida.
3. ¿Es este truco de .htaccess suficiente para asegurar completamente mi sitio?
Si bien este es un paso de seguridad efectivo e importante, es solo una parte de un plan de seguridad completo. Una estrategia completa también debe incluir el uso de un plugin de seguridad de WordPress, mantener actualizados todos sus temas y plugins, y exigir contraseñas seguras para todos los usuarios.
4. ¿Qué pasa si mi proveedor de hosting web usa Nginx en lugar de Apache?
El archivo .htaccess solo funciona en servidores web Apache. Si su proveedor de hosting usa Nginx, necesitará agregar una regla diferente al archivo de configuración de su servidor para lograr el mismo resultado. Recomendamos contactar al equipo de soporte de su proveedor para obtener ayuda con el código correcto para su plataforma.
¿Qué debo hacer si obtengo un error después de agregar el archivo .htaccess?
En casos muy raros, podría ver un 'Error interno del servidor 500' después de subir el archivo. Esto generalmente significa que su proveedor de hosting web está utilizando una versión anterior del software del servidor Apache.
Si esto sucede, simplemente abra su archivo .htaccess y reemplace el código que agregó con el siguiente fragmento en su lugar:
<Files *.php>
deny from all
</Files>
Guarde el archivo y vuelva a subirlo. Esta versión anterior del código hace lo mismo pero es compatible con servidores obsoletos.
Guías expertas sobre cómo mejorar la seguridad de WordPress
Esperamos que este artículo te haya ayudado a aprender cómo deshabilitar la ejecución de PHP en ciertos directorios de WordPress para fortalecer la seguridad de tu sitio web. También podrías querer aprender otras técnicas de seguridad. Aquí tienes algunas de nuestras mejores guías sobre cómo mejorar la seguridad de WordPress:
- La guía definitiva de seguridad de WordPress (paso a paso)
- Cómo realizar una auditoría de seguridad de WordPress (Lista de verificación completa)
- Cómo escanear tu sitio de WordPress en busca de código potencialmente malicioso
- Los mejores escáneres de seguridad de WordPress para detectar malware y hackeos
- Cómo encontrar y eliminar la inyección de enlaces de spam en WordPress
- Cómo agregar autenticación de dos factores en WordPress (método gratuito)
- Cómo agregar preguntas de seguridad a la pantalla de inicio de sesión de WordPress
- Qué, por qué y cómo de las claves de seguridad de WordPress
Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.


tom
con respecto a la desactivación de la ejecución de PHP en la carpeta wp-includes para prevenir la ejecución de cualquier código de puerta trasera, etc. – pero parece haber muchos, muchos archivos PHP en esa carpeta, por ejemplo: admin-bar.php o author-template.php, por nombrar algunos que parecen importantes para poder ejecutar y me pregunto si colocar un archivo htaccess en esa carpeta no detendrá la ejecución de esos archivos y posiblemente interrumpirá las funciones principales de WordPress? por cierto, gracias por muchos artículos interesantes en tu sitio web
Soporte de WPBeginner
A menos que tengas un plugin específico que agregue funcionalidad a los archivos, no debería haber ningún problema en impedir la ejecución de PHP en las carpetas.
Administrador
tom
Gracias por tu respuesta. mi configuración es simplemente: astra/spectra, malcare y all in one seo, en ese caso colocaré .htaccess también en wp-includes. Gracias de nuevo por muchos artículos geniales
Mrteesurez
Veo esto como una gran forma de asegurar un sitio web al deshabilitar la ejecución de PHP en las carpetas. Según este artículo, solo se aseguran dos directorios, ¿qué pasa con los otros? ¿Se aseguran naturalmente o los hackers no los necesitan durante el intento?
Soporte de WPBeginner
Otras secciones de los archivos de tu sitio normalmente requieren un acceso más estricto o tienen archivos PHP que son necesarios para que tu sitio funcione.
Administrador
Jiří Vaněk
Gracias por estos consejos de seguridad. He creado un archivo htaccess y lo subiré por FTP. Tengo un sitio web en mi propio servidor, así que la cuestión de la seguridad depende completamente de mí. Gracias por el siguiente paso para hacer mi WordPress un poco más seguro de nuevo.
Unarine Leo Netshifhefhe
También tengo esta alerta en mi plugin Updraft donde las copias de seguridad no se están realizando, ¿puede ser esto debido a htaccess?
"No se pudo crear el directorio de copias de seguridad..."
La carpeta existe, pero tu servidor web no tiene permisos para escribir en ella. Necesitarás consultar con tu proveedor de alojamiento web para saber cómo establecer los permisos para que un plugin de WordPress pueda escribir en el directorio. (wp-content/updraft)
Soporte de WPBeginner
Parece ser un problema de permisos de archivo/carpeta, deberías contactar a tu proveedor de alojamiento y ellos podrán ayudarte, también puedes consultar nuestra guía a continuación:
https://www.wpbeginner.com/beginners-guide/how-to-fix-file-and-folder-permissions-error-in-wordpress/
Administrador
Brian Prom
FYI: tienes un error tipográfico en tu fragmento de código para el fragmento .htaccess.
Usar tu fragmento de código tal cual (sin la / de cierre) interrumpe la carga de imágenes.
Soporte de WPBeginner
Thank you for pointing that out, our code should be fixed
Administrador
Vitor Gonçlaves
He encontrado algunos archivos .php en la carpeta de subidas creados por plugins. ¿Puedo asumir que esto no causará un problema, o tengo que analizar cada plugin individualmente?
Soporte de WPBeginner
Si te pones en contacto con tus plugins, ellos podrán informarte sobre los detalles de esos archivos.
Administrador
nirbo
Gracias por la información
Soporte de WPBeginner
You’re welcome
Administrador
cliff denney
muchas gracias
Soporte de WPBeginner
You’re welcome
Administrador
Suman Samanta
¡Gran escritura! Tienes un don para la escritura informativa. Tu contenido me ha impresionado más allá de las palabras. Tengo mucha admiración por tu escritura. Gracias por todas tus valiosas aportaciones sobre este tema.
Soporte de WPBeginner
Thank you, glad you enjoy our writing
Administrador
Thato
Chicos, creo que he estropeado mi archivo htaccess, mi sitio web no muestra imágenes en absoluto
Soporte de WPBeginner
Hola Thato,
Puedes descargar tu archivo .htaccess a tu computadora como copia de seguridad y luego eliminarlo de tu sitio web. Ve al área de administración de WordPress en Ajustes » Enlaces permanentes y haz clic en el botón de guardar cambios. Esto debería regenerar tu archivo .htaccess.
Administrador
Shawn Rebelo
No hagas wp-content.
Haz wp-content/uploads.
Y esto:
orden permitir,denegar
denegar a todos
May very on servers.
Hardik
¿Afecta a los archivos de carga para subir en páginas web?
Descubrí que después de subir este archivo htaccess a la carpeta, muchas de las imágenes de muchas publicaciones no se muestran.
Chuck Cochems
Sí, denegar el acceso a los archivos php en el directorio de inclusión rompe el sitio porque la inclusión realmente obedece las restricciones de .htaccess.
Pero la restricción en el directorio de subidas es muy inteligente, y esto debería estar ahí POR DEFECTO en el directorio de subidas, y no hay ninguna buena razón para que no esté presente.
Stan
¿Cuál es el método para servidores IIS?
¡Gracias!
KOnnie
¡ZOMG! ¿No puedes simplemente deshabilitar el acceso de escritura a la carpeta /wp-includes?
¿Por qué luchar con las consecuencias cuando puedes prevenir la causa?
Jonathan Hodgson
¿No detendría esto que WordPress actualice los archivos en las actualizaciones principales?
Jeff Wigal
También puedes poner esto en tu virtualhost de Apache, que logrará lo mismo:
Orden permitir,denegar
Denegar a todos
anton
¿cómo implementar este código si tenemos una combinación de mayúsculas y minúsculas en la extensión del archivo, por ejemplo, on.php en mi sitio web funciona, pero no funciona si el archivo se llama con.PHp, .PHP, .PhP o una combinación de ellos, el script backdoor todavía se ejecuta?
Gracias
Timothée Moulin
Puedes poner esto en tu archivo .htaccess
Orden denegar,permitir
Denege a todos
Shams
Hola Syed,
Gracias por una publicación tan informativa y, de hecho, proporciona una gran solución para proteger WordPress de los hackers.
Vladimir
¡Hola!
Seguí todas tus instrucciones en este artículo, pero no funciona...
Gracias
Aurélien Debord
Una publicación muy útil con consejos tan buenos y rápidos.
Gracias
Ramon
Creé un archivo .htaccess en la carpeta wp-includes. El sitio se veía bien, pero mi editor WYSIWYG en las páginas de administración no funcionaba. Tuve que eliminar el archivo .htaccess de nuevo. (WP 3.9.1)
Wes
También encontré mi carpeta wp-includes llena de archivos php y no veo cómo usar ese archivo .htaccess allí no rompería algo. Lo usé en el directorio de subidas.
Personal editorial
A veces lo rompe (dependiendo del plugin que estés usando), pero no siempre.
Administrador
Red
perdona mi mal inglés…
seguí todas tus instrucciones en este artículo, pero cuando voy a mi panel para agregar una nueva publicación, mi sección de publicaciones estaba desordenada. … sospecho que el .htaccess fue el problema.
cuando lo borré, la publicación estaba bien.
Personal editorial
¿A qué directorio subiste el archivo .htaccess que causó este problema?
Administrador
Chris
Agregué el archivo .htaccess a mi wp-includes y no tuve ningún problema. Muchas gracias por los consejos.
Brad
Intenté esto en mi directorio /wp-includes/, que está lleno de archivos php. Por supuesto, ya no pude acceder al sitio. ¿Realmente quisiste incluir el directorio includes para usarlo con el archivo .htaccess?
¿Quizás quisiste decir /wp-includes/images?
Personal editorial
No. Nos referíamos a la carpeta /wp-includes/. Lo tenemos en nuestra carpeta wp-includes. Si por alguna razón está rompiendo tu sitio, entonces elimina el archivo .htaccess de tu carpeta wp-includes.
Administrador
Brad
Extraño, mi carpeta wp-includes tiene más de 90 archivos php. Y rompe el sitio. Lo quité inmediatamente.
Pero lo puse en la carpeta /wp-content/uploads/ y funciona muy bien allí. Gracias por responder
Alfred
Poner un archivo htaccess que niega el acceso a archivos php en un directorio lleno de archivos php parece bastante extraño. Supongo que es porque estos archivos normalmente solo se incluyen, no se ejecutan directamente. Si es así, ¿no sería mejor simplemente negar el acceso a todo el directorio?