El archivo wp-config.php es uno de los archivos más importantes de un sitio WordPress. Contiene la configuración crítica de la instalación, incluyendo las credenciales de la base de datos y las claves de seguridad. Si un atacante consigue acceder a este archivo, podría comprometer por completo el sitio.

1. ¿Qué contiene wp-config.php?

Si un atacante logra acceder o descargar tu archivo de configuración, obtendrá los datos de acceso directo a la base de datos MySQL, prefijos de tablas y claves secretas (SALT).

Normalmente incluye información como:

  1. Nombre de la base de datos DB_NAME
  2. Usuario de la base de datos DB_USER
  3. Contraseña de la base de datos DB_PASSWORD
  4. Servidor de la base de datos DB_HOST
  5. Claves de autenticación SALTs que protegen las sesiones de los usuarios.
  6. Prefijo de las tablas $table_prefix
  7. Configuraciones avanzadas de WordPress.

¿Por qué es un riesgo?

En una instalación correctamente configurada, wp-config.php no debería ser accesible desde el navegador. Sin embargo, una mala configuración del servidor web o una vulnerabilidad podría permitir:

  1. Robo de credenciales de la base de datos.
  2. Acceso a toda la información del sitio.
  3. Modificación o eliminación de contenido.
  4. Ejecución de código malicioso.

¿Cómo restringir el acceso?

Método 1: Bloquear el acceso mediante .htaccess (Apache).

Añade estas líneas al archivo .htaccess ubicado en la raíz del sitio:

<Files wp-config.php> Require all denied </Files>

Si utilizas una versión antigua de Apache:

<Files wp-config.php> Order allow,deny Deny from all </Files>

Método 2: Bloquear el acceso en Nginx.

Añade esta regla en el bloque del servidor:

location = /wp-config.php { deny all; return 404; }

Después reinicia Nginx:

sudo systemctl reload nginx

Método 4: Colocar wp-config.php fuera del directorio público.

En muchos servidores puedes mover el archivo un nivel por encima de public_html o htdocs.

Ejemplo: /home/usuario/ wp-config.php /home/usuario/public_html/ wp-admin/ wp-content/ wp-includes/

WordPress lo detectará automáticamente.

Método 5: Mantener PHP funcionando correctamente.

Si el servidor deja de interpretar archivos PHP y los sirve como texto plano, wp-config.php podría quedar expuesto. Comprueba que PHP esté correctamente configurado y actualizado.

Método 6: Desactivar el listado de directorios.

En Apache:

Options -Indexes

Esto evita que un atacante pueda listar el contenido de directorios mal configurados.

Método 7: Mantener WordPress actualizado.

Mantén siempre al día:

  1. WordPress
  2. Plugins
  3. Temas
  4. PHP

Muchas vulnerabilidades que permiten leer archivos sensibles ya han sido corregidas en versiones recientes.

¿Cómo comprobar si está protegido?

Abre en el navegador:

https://tudominio.com/wp-config.php

El resultado no debe mostrar el contenido del archivo

Lo esperado es recibir alguno de estos códigos:

  1. 403 Forbidden (ideal)
  2. 404 Not Found (también válido)
  3. 500 Internal Server Error (depende de la configuración)

Si el navegador muestra el contenido del archivo o solicita descargarlo, el servidor está gravemente mal configurado y debe corregirse de inmediato.


Buenas prácticas adicionales


  1. Utiliza HTTPS.
  2. Desactiva la edición de archivos desde el panel de WordPress: define('DISALLOW_FILE_EDIT', true);
  3. Realiza copias de seguridad periódicas.
  4. Implementa un firewall de aplicaciones web (WAF), como el de un CDN o un complemento de seguridad.
  5. Supervisa los registros del servidor para detectar intentos de acceso a wp-config.php.

En condiciones normales, un usuario nunca debería poder acceder a wp-config.php desde Internet. Si un escáner de seguridad detecta que este archivo es accesible, se trata de una vulnerabilidad crítica que debe solucionarse de inmediato.