# SEGURIDAD — variables de entorno y credenciales ## Qué ha cambiado `config.php` (tanto el de la raíz como el de `noduscorpadmin/`) ya no tiene contraseñas ni claves de API escritas en el código. Ahora se leen de un archivo `.env`, que es el único sitio donde viven los datos reales. Se han añadido: - `lib/env.php` — carga el `.env`, sin depender de Composer. - `.env` — tus valores reales actuales (ver más abajo, hay que rotarlos). - `.env.example` — plantilla sin datos reales, esta sí se puede compartir o subir a un repositorio. - `.htaccess` — bloquea el acceso directo por navegador a `.env`, `.git`, `schema.sql`, etc. - `.gitignore` — para que un futuro `git init` no incluya el `.env` real por accidente. ## Dónde subir el `.env` en Hostinger (recomendado) En hPanel, la carpeta de tu dominio contiene `public_html` como una subcarpeta más — hay espacio "al lado" de `public_html`, fuera de lo que es accesible por navegador. 1. hPanel → **Archivos → Administrador de archivos**. 2. Entra en la carpeta de tu dominio (el nivel que contiene `public_html`, no dentro de ella). 3. Sube ahí el archivo `.env` (al mismo nivel que `public_html`, **no dentro**). 4. Sube el resto del proyecto (todo lo que había en esta carpeta) dentro de `public_html`, como siempre. Con esto, aunque algún día falle una configuración del servidor, `.env` sigue siendo físicamente imposible de descargar desde el navegador porque no está dentro de la carpeta pública. ### Alternativa si tu plan no te deja subir nada fuera de `public_html` Sube `.env` dentro de `public_html`, junto a `index.php`. El `.htaccess` incluido bloquea el acceso directo por navegador a cualquier archivo `.env*`. Es menos robusto que la opción anterior (depende de que Apache respete el `.htaccess`), pero mejor que tener las claves en el propio código PHP. ## Si algo no carga tras subir los archivos `config.php` corta la ejecución con un mensaje claro ("Falta configurar la variable de entorno '...'") si no encuentra el `.env` o si le falta alguna variable obligatoria. Si ves ese mensaje: - Revisa que subiste `.env` (no solo `.env.example`). - Revisa que está en una de las rutas que busca `config.php` (ver comentarios al principio del archivo). - Revisa que no le falta ninguna variable comparando con `.env.example`. ## Credenciales que debes rotar ya El `config.php` original que me compartiste tenía estas credenciales escritas directamente en el código, y ese archivo ha pasado por este chat — así que, por precaución, hay que tratarlas como expuestas y generar unas nuevas antes de dejar la web en producción (o cuanto antes si ya está en producción): - [ ] **Contraseña de la base de datos** (`DB_PASS`) — cámbiala en hPanel → Bases de datos. - [ ] **Contraseña del panel `/admin`** (`ADMIN_PASS`) — pon una nueva y actualízala en `.env`. - [ ] **Contraseña de la cuenta de email SMTP** (`SMTP_PASS`) — cámbiala en hPanel → Emails. - [ ] **Clave de la API de Anthropic** (`ANTHROPIC_API_KEY`) — genera una nueva en [console.anthropic.com/settings/keys](https://console.anthropic.com/settings/keys) y revoca la antigua. - [ ] **Secret de Chatbase** (`CHATBASE_SECRET`) — el propio `config.php` original ya avisaba de que esta se compartió por chat y debía considerarse expuesta. Genera una nueva en Chatbase → Settings → Security. Después de generar cada valor nuevo, solo hay que actualizar el `.env` — no hace falta tocar ningún archivo `.php`. ## Sobre la carpeta `noduscorpadmin/` Es una copia completa y antigua de todo el sitio (con su propio `/admin` y su propio `config.php`), aparentemente de una subida anterior. Le he aplicado el mismo cambio a variables de entorno para que no queden claves sueltas, pero si ya no la necesitas, **la recomendación es borrarla del servidor por completo**: mientras exista, es un segundo panel de administración accesible y una copia extra de tu base de código, sin ningún beneficio.