---
title: "Seguridad avanzada y mantenimiento"
description: "Seguridad avanzada de Éclair: auditoría ofensiva, ECLAIR_SECRET, control de integridad, recuperación por FTP, actualización sin riesgos, copias y vigilancia."
url: "https://eclair.academy/es/rutas/experto/seguridad-avanzada"
lang: "es"
author: "Thierry Gustin"
published: "2026-11-02"
updated: "2026-11-02"
---

# Seguridad avanzada y mantenimiento

> **Lo esencial** — La seguridad avanzada de Éclair combina protecciones integradas, puestas a prueba por una auditoría ofensiva (17 vulnerabilidades encontradas y corregidas), con una rutina de mantenimiento: copia de seguridad externa, actualización que sustituye app/ y assets/ sin tocar data/ ni media/, control de integridad, ECLAIR_SECRET, HSTS, dirección de administración personalizada y revocación de los accesos MCP innecesarios.

La seguridad avanzada de Éclair empieza donde terminan los ajustes del día a día: entender qué protege tus datos, recuperar un acceso perdido, actualizar sin romper nada y vigilar el sitio a largo plazo. Esta lección está pensada para quien administra uno o varios sitios, tanto en un hosting compartido como en un VPS.

> **Antes de empezar** — Duración: 45 minutos. Requisitos: dominar [La seguridad en el día a día](https://eclair.academy/es/rutas/intermedio/seguridad-diaria) (verificación en dos pasos, roles, página Seguridad), tener acceso FTP o SSH y haber leído [La arquitectura de Éclair](https://eclair.academy/es/rutas/experto/arquitectura).

## Lo que sabrás hacer

### 🛡 Entender las protecciones

Lo que comprobó la auditoría ofensiva y lo que Éclair hace solo.

### 🔧 Actualizar sin riesgos

El procedimiento completo, por FTP o por SSH.

### 📅 Mantener una rutina

Copias externas, integridad, registros y accesos MCP.

## Lo que comprobó la auditoría de seguridad ofensiva

Toda seguridad avanzada empieza con una pregunta: ¿qué se ha probado de verdad? Éclair fue atacado a propósito: condiciones de carrera entre peticiones, fuerza bruta, redirecciones, inyecciones, archivos trampa. La auditoría encontró 17 vulnerabilidades (2 graves, 7 medias y 8 leves), todas corregidas, y después se repitieron sus 13 escenarios de ataque sobre la versión corregida: todos quedaron neutralizados. Gran parte de ellos se ejecuta ahora con cada `php tests/run.php`, por ejemplo:

| Ataque repetido | Comprobación automática |
| --- | --- |
| sitio subido y olvidado, instalado por un desconocido | instalador bloqueado pasadas 2 horas |
| dirección del sitio falsificada | nunca se usa para redirigir a los visitantes |
| contraseñas probadas en paralelo | bloqueo por red; el propietario, desde su dispositivo habitual, nunca queda bloqueado |
| caché envenenada con una cabecera falsificada | cabeceras independientes del protocolo declarado |
| archivo de datos llamado desde la web | 404, y línea `<?php exit; ?>` al principio del archivo |
| archivo trampa de recuperación por FTP | rechazado y borrado si no tiene la línea de protección |

## Las protecciones de los datos, en detalle

- **Ninguna base de datos**, así que ninguna inyección SQL. El servidor prohíbe el acceso a las carpetas `data/`, `app/` y `cache/`, y cada archivo de datos empieza por `<?php exit; ?>`.
- **Archivos privados**: permisos 0600, carpetas de datos y de caché en 0700, escrituras atómicas con bloqueo. No se puede escribir ninguna secuencia `<?php` en un archivo de datos.
- **Sesiones**: ninguna antes de iniciar sesión, archivos nombrados con la huella SHA-256 de su identificador, cookies `HttpOnly`, `Secure` en HTTPS y `SameSite=Strict`.
- **Contraseñas**: Argon2id con 19 MiB y 2 pasadas, con bcrypt como alternativa. Un hash ficticio hace que la comprobación de un correo desconocido dure lo mismo que la de una cuenta real: es imposible adivinar qué cuentas existen.
- **Claves de API**: cifradas en `data/vault.php` (libsodium o, en su defecto, AES-256-GCM), nunca se devuelven al navegador y quedan fuera de las copias de seguridad.

## ECLAIR_SECRET: ¿por qué y cuándo?

La clave de la caja fuerte se deriva del secreto del sitio, guardado en `data/keys.php`. Quien consiguiera una copia solo de `data/` (un archivo manual de la carpeta, un volumen Docker, una carpeta de datos mal protegida) podría, por tanto, descifrar tus claves de API. La constante `ECLAIR_SECRET` añade un segundo secreto, guardado fuera de `data/`: entonces hacen falta los dos.

```php
<?php
// eclair-config.php, junto a index.php
defined('ECLAIR') || exit;
define('ECLAIR_SECRET', 'une-longue-phrase-secrète-propre-à-ce-site');
```

Defínela **antes** de guardar tus claves de API. Si la añades, la cambias o la pierdes después, las claves ya guardadas se vuelven ilegibles: basta con volver a introducirlas en **Ajustes › Asistente IA**, porque nada más depende de ella. Guarda esta frase en tu gestor de contraseñas, una por sitio. El archivo `eclair-config.php` está protegido: el servidor rechaza cualquier `.php` distinto de `index.php`, y el control de integridad lo reconoce.

## Control de integridad y manifest.php

En **Seguridad › Integridad de los archivos**, **Analizar ahora** compara cada archivo de Éclair con su huella original, guardada en `app/manifest.php`, y busca archivos sospechosos.

| Resultado | Significado | Qué hacer |
| --- | --- | --- |
| Archivos modificados | contenido distinto del original | normal si tienes plantillas personalizadas; si no, vuelve a poner el archivo del ZIP y busca la causa |
| Archivos que faltan | borrados o mal subidos | vuelve a subirlos desde el ZIP |
| Archivos desconocidos | presentes en `app/`, `assets/` o en la raíz, pero ausentes del manifiesto | a menudo, un resto de una versión antigua: bórralo |
| Archivos sospechosos | en `media/`, algo que no es ni una imagen ni una tipografía; en `data/` o `cache/`, un script o un `.php` sin línea de protección | trátalo como una intrusión |

Lanza el análisis después de cada actualización, cada mes y en cuanto algo te extrañe. Ante un archivo sospechoso: descarga una copia de seguridad, guarda una copia del archivo para analizarlo, bórralo, cambia las contraseñas y busca por dónde entró el intruso.

## Registros acotados y acceso perdido

Los registros `data/logs/security.php` y `data/logs/errors.php` guardan una línea JSON por evento. Cada campo se trunca a 300 caracteres y, por encima de 1 MB, solo se conservan los últimos 256 KB: un atacante no puede hacerlos crecer sin límite. La página **Seguridad** muestra el **Registro de seguridad** (inicios de sesión, fallos, bloqueos, verificación en dos pasos, copias de seguridad, ajustes modificados) y los **Últimos errores técnicos**.

¿Contraseña olvidada, o móvil de la verificación en dos pasos perdido, y ningún otro administrador? Crea por FTP el archivo `data/reset.php` con exactamente estas tres líneas, poniendo tu correo y tu nueva contraseña en las dos últimas:

```text
<?php exit; ?>
ton-adresse@email.fr
TonNouveauMotDePasse2026
```

En las 24 horas siguientes, inicia sesión con ese correo y esa contraseña, que debe cumplir las reglas habituales (10 caracteres como mínimo). La contraseña se sustituye, la verificación en dos pasos de la cuenta se desactiva, tus demás sesiones se cierran y el archivo se borra. Sin la primera línea, el archivo se rechaza y se elimina. Del mismo modo, si la instalación muestra «Instalación bloqueada», borra `data/install-window.php`: el plazo de 2 horas vuelve a abrirse.

## ¿Cómo actualizar Éclair sin romper nada?

![Actualización de Éclair: sustituir app y assets, conservar data y media](https://eclair.academy/media/2026/11/eclair-academy-update-es.png)
*Lo que sustituye una actualización y lo que nunca toca.*

1. Descarga una copia de seguridad: **Seguridad › Descargar una copia de seguridad**, con tu contraseña.
2. Por FTP, borra las carpetas `app/` y `assets/` y después sube las de la nueva versión junto con `index.php` y `.htaccess`. Borrar primero evita que queden archivos antiguos, que el control de integridad señalaría como desconocidos.
3. No toques ni `data/` (contenidos, ajustes, cuentas, CSS personalizado), ni `media/` (imágenes), ni `eclair-config.php`.
4. En **Ajustes › Avanzado**, haz clic en **Vaciar la caché**: las páginas guardadas todavía apuntan a las versiones antiguas de los archivos estáticos.
5. Lanza **Analizar ahora**: solo deben aparecer tus posibles plantillas personalizadas.

Por SSH, los pasos 2 y 3 caben en cuatro comandos, ya que el ZIP contiene una carpeta `eclair/`:

```bash
cd /var/www/eclair
unzip -q ~/eclair-cms-1.8.0.zip -d ~/eclair-new
rm -rf app assets
cp -r ~/eclair-new/eclair/app ~/eclair-new/eclair/assets ~/eclair-new/eclair/index.php ~/eclair-new/eclair/.htaccess .
```

## Copias de seguridad externas y permisos de los archivos

No hay seguridad avanzada sin una copia de seguridad fuera del servidor. La copia ZIP contiene `data/` y `media/`, sin las sesiones, los contadores, la carpeta `ai/` (conversaciones y conexiones MCP), `vault.php` ni `reset.php`. Para restaurar, sustituye `data/` y `media/` por los del ZIP, vacía la caché, vuelve a introducir tus claves de API y vuelve a conectar Claude o ChatGPT. Guarda al menos una copia fuera del hosting y haz una antes de cada actualización.

En un VPS, automatiza la misma copia con `tar`, excluyendo los mismos elementos:

```bash
tar -czf /sauvegardes/eclair-$(date +%F).tar.gz -C /var/www/eclair \
  --exclude=data/sessions --exclude=data/limits --exclude=data/ai \
  --exclude=data/vault.php --exclude=data/reset.php data media
```

En cuanto a los permisos, Éclair solo escribe en `data/`, `cache/` y `media/`. En un VPS, solo esas tres carpetas deben pertenecer al usuario de PHP; el código (`app/`, `assets/`, `index.php`) puede quedarse en solo lectura para él, y `eclair-config.php`, legible por PHP pero no por las demás cuentas. En un hosting compartido, deja las carpetas en 755, como pide el asistente de instalación.

## Seguridad avanzada: HSTS, administración y cortafuegos

- **HSTS** (**Ajustes › Avanzado**): Éclair envía `Strict-Transport-Security: max-age=31536000`, un año, sin los subdominios. Activa esta opción solo cuando el HTTPS sea totalmente estable.
- **Dirección de la administración** (**Ajustes › Avanzado**, de 3 a 40 caracteres: minúsculas, números y guiones): una dirección personal aleja a los robots. Ni el botón **Editar** del sitio ni el descubrimiento del conector MCP la revelan: apúntala bien.
- **Cortafuegos de aplicaciones (WAF)**: Éclair no lo necesita, pero puedes añadir una capa, como las reglas OWASP CRS con ModSecurity o el cortafuegos de tu CDN. Después, prueba a guardar en el editor, `/_eclair/` y `/.well-known/`: esas peticiones contienen JSON y HTML que a veces provocan falsos positivos.

## Vigilancia y revocación de los accesos MCP

La tarjeta **Nivel de protección** de la página **Seguridad** resume siete puntos: HTTPS obligatorio, dirección del sitio verificada, verificación en dos pasos para todos los administradores, dirección de administración personalizada, PHP 8.2 o superior, contraseñas en Argon2id y HSTS. Apunta al 100 %.

| Frecuencia | Acción |
| --- | --- |
| cada mes | leer el nivel de protección y el registro de seguridad, lanzar el análisis de integridad, guardar una copia fuera del servidor |
| con cada versión | seguir el procedimiento de actualización y volver a lanzar el análisis |
| cada trimestre | revisar las cuentas en **Usuarios** y revocar las aplicaciones MCP innecesarias |
| de forma continua | una vigilancia externa de disponibilidad que te avise si el sitio deja de responder |

Para revocar el conector MCP, haz clic en **Revocar el acceso** junto a la aplicación, en **Ajustes › Asistente IA**. Desmarcar **Permitir conexiones MCP** desconecta todas las aplicaciones de golpe, igual que un cambio de contraseña o **Cerrar sesión en mis otros dispositivos** en tu perfil. Los tokens de acceso duran una hora y solo se guardan sus huellas.

## Para recordar

- La seguridad avanzada de Éclair se basa en protecciones verificadas por una auditoría ofensiva y repetidas por las pruebas automáticas.
- Define `ECLAIR_SECRET` antes de guardar claves de API y guarda la frase fuera del sitio.
- Una actualización sustituye `app/` y `assets/`, conserva `data/`, `media/` y `eclair-config.php`, y termina vaciando la caché.
- El control de integridad, cada mes y después de cada actualización, detecta archivos modificados, desconocidos y sospechosos.
- `data/reset.php` devuelve el acceso en 24 horas, sin ayuda externa, a quien controla el FTP.

## Para saber más

- [La seguridad en el día a día](https://eclair.academy/es/rutas/intermedio/seguridad-diaria): verificación en dos pasos, roles y copia de seguridad en un clic.
- [Entender el conector MCP](https://eclair.academy/es/rutas/ia-mcp/entender-mcp): tokens, autorizaciones y permisos de las aplicaciones.
- [Nginx, VPS, proxy y CDN](https://eclair.academy/es/rutas/experto/nginx-vps): HTTPS, HSTS y dirección IP real fuera de Apache.
- OWASP: [hoja de referencia sobre el almacenamiento de contraseñas](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html), de donde salen los ajustes Argon2id de Éclair (en inglés).
- PHP: [versiones con soporte y fechas de fin de soporte](https://www.php.net/supported-versions.php), en inglés.

## Preguntas frecuentes

### ¿La copia de seguridad ZIP contiene mis claves de API?

No: `vault.php` y la carpeta `ai/` quedan fuera. Después de una restauración, vuelve a introducir tus claves en **Ajustes › Asistente IA** y vuelve a conectar tus aplicaciones MCP.

### ¿Qué hago si el control de integridad señala un archivo sospechoso?

Trátalo como una intrusión, sin esperar. Los pasos se describen en la sección sobre el control de integridad: copia de seguridad, copia del archivo para analizarlo, borrado, contraseñas nuevas y búsqueda de la vulnerabilidad.

### ¿Qué pasa si pierdo eclair-config.php y ECLAIR_SECRET?

Solo las claves de API se vuelven ilegibles: el resto del sitio funciona. Crea de nuevo el archivo con una frase nueva y vuelve a introducir tus claves.

### ¿Hace falta un cortafuegos de aplicaciones para Éclair?

No es necesario: sus protecciones están integradas. Si añades uno, comprueba que deja pasar el editor, `/_eclair/` y `/.well-known/`.
