---
title: "Sécurité avancée et maintenance"
description: "Sécurité avancée d'Éclair : revue offensive, ECLAIR_SECRET, contrôle d'intégrité, secours par FTP, mise à jour sans risque, sauvegardes et surveillance."
url: "https://eclair.academy/parcours/expert/securite-avancee"
lang: "fr"
author: "Thierry Gustin"
published: "2026-11-02"
updated: "2026-11-02"
---

# Sécurité avancée et maintenance

> **L’essentiel** — La sécurité avancée d'Éclair combine des protections intégrées, éprouvées par une revue offensive (17 failles trouvées et corrigées), et une routine de maintenance : sauvegarde hors site, mise à jour qui remplace app/ et assets/ sans toucher à data/ ni media/, contrôle d'intégrité, ECLAIR_SECRET, HSTS, adresse d'administration personnalisée et révocation des accès MCP inutiles.

La sécurité avancée d'Éclair commence là où s'arrêtent les réglages du quotidien : comprendre ce qui protège tes données, réparer un accès perdu, mettre à jour sans rien casser et surveiller le site dans la durée. Cette leçon s'adresse à qui administre un ou plusieurs sites, sur un hébergement mutualisé comme sur un VPS.

> **Avant de commencer** — Durée : 45 minutes. Prérequis : maîtriser [La sécurité au quotidien](https://eclair.academy/parcours/intermediaire/securite-quotidien) (double authentification, rôles, page Sécurité), disposer d'un accès FTP ou SSH, et avoir lu [L'architecture d'Éclair](https://eclair.academy/parcours/expert/architecture).

## Ce que tu sauras faire

### 🛡 Comprendre les protections

Ce que la revue offensive a vérifié et ce qu'Éclair fait seul.

### 🔧 Mettre à jour sans risque

La procédure complète, par FTP ou en SSH.

### 📅 Tenir une routine

Sauvegardes hors site, intégrité, journaux et accès MCP.

## Ce que la revue de sécurité offensive a vérifié

Toute sécurité avancée commence par une question : qu'a-t-on vraiment testé ? Éclair a été attaqué volontairement : courses entre requêtes, force brute, redirections, injections, fichiers piégés. La revue a trouvé 17 failles (2 graves, 7 moyennes, 8 mineures), toutes corrigées, puis ses 13 scénarios d'attaque ont été rejoués sur la version corrigée : tous neutralisés. Une grande partie tourne désormais à chaque exécution de `php tests/run.php`, par exemple :

| Attaque rejouée | Vérification automatique |
| --- | --- |
| site déposé puis oublié, installé par un inconnu | installateur verrouillé après 2 heures |
| adresse du site falsifiée | jamais utilisée pour rediriger les visiteurs |
| mots de passe testés en parallèle | blocage par réseau, propriétaire sur son appareil habituel jamais bloqué |
| cache empoisonné par un en-tête forgé | en-têtes indépendants du protocole annoncé |
| fichier de données appelé depuis le web | 404, et ligne `<?php exit; ?>` en tête du fichier |
| fichier de secours FTP piégé | refusé et supprimé sans ligne de protection |

## Les protections des données, en détail

- **Aucune base de données**, donc aucune injection SQL. Les dossiers `data/`, `app/` et `cache/` sont interdits par le serveur, et chaque fichier de données commence par `<?php exit; ?>`.
- **Fichiers privés** : droits 0600, dossiers de données et de cache en 0700, écritures atomiques sous verrou. Aucune séquence `<?php` ne peut être écrite dans un fichier de données.
- **Sessions** : aucune avant la connexion, des fichiers nommés par l'empreinte SHA-256 de leur identifiant, des cookies `HttpOnly`, `Secure` en HTTPS et `SameSite=Strict`.
- **Mots de passe** : Argon2id avec 19 Mio et 2 passes, bcrypt en repli. Une empreinte factice rend la vérification d'un e-mail inconnu aussi longue que celle d'un vrai compte : impossible de deviner quels comptes existent.
- **Clés d'API** : chiffrées dans `data/vault.php` (libsodium, ou AES-256-GCM à défaut), jamais renvoyées au navigateur, exclues des sauvegardes.

## ECLAIR_SECRET : pourquoi et quand ?

La clé du coffre est dérivée du secret du site, rangé dans `data/keys.php`. Quelqu'un qui obtiendrait une copie de `data/` seul (archive manuelle du dossier, volume Docker, dossier de données mal protégé) pourrait donc déchiffrer tes clés d'API. La constante `ECLAIR_SECRET` ajoute un second secret, rangé hors de `data/` : il faut alors les deux.

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

Définis-la **avant** d'enregistrer tes clés d'API. Si tu l'ajoutes, la changes ou la perds ensuite, les clés déjà enregistrées deviennent illisibles : il suffit de les saisir de nouveau dans **Réglages › Assistant IA**, rien d'autre n'en dépend. Range cette phrase dans ton gestionnaire de mots de passe, une par site. Le fichier `eclair-config.php` est protégé : le serveur refuse tout `.php` autre qu'`index.php`, et le contrôle d'intégrité le reconnaît.

## Contrôle d'intégrité et manifest.php

Dans **Sécurité › Intégrité des fichiers**, **Analyser maintenant** compare chaque fichier d'Éclair à son empreinte d'origine, enregistrée dans `app/manifest.php`, et cherche des fichiers suspects.

| Résultat | Signification | Que faire |
| --- | --- | --- |
| Fichiers modifiés | contenu différent de l'original | normal pour des gabarits personnalisés ; sinon, remets le fichier de l'archive et cherche la cause |
| Fichiers manquants | supprimés ou mal envoyés | renvoie-les depuis l'archive |
| Fichiers inconnus | présents dans `app/`, `assets/` ou à la racine, absents du manifeste | souvent un reste d'ancienne version : supprime-le |
| Fichiers suspects | dans `media/`, autre chose qu'une image ou une police ; dans `data/` ou `cache/`, un script ou un `.php` sans ligne de protection | traite-le comme une intrusion |

Lance l'analyse après chaque mise à jour, chaque mois, et dès qu'un comportement t'étonne. Face à un fichier suspect : télécharge une sauvegarde, garde une copie du fichier pour l'analyser, supprime-le, change les mots de passe et cherche par où l'intrus est passé.

## Journaux bornés et accès perdu

Les journaux `data/logs/security.php` et `data/logs/errors.php` enregistrent une ligne JSON par événement. Chaque champ est tronqué à 300 caractères, et au-delà de 1 Mo, seuls les 256 derniers Ko sont gardés : un attaquant ne peut pas les faire gonfler. La page **Sécurité** affiche le **Journal de sécurité** (connexions, échecs, blocages, double authentification, sauvegardes, réglages modifiés) et les **Dernières erreurs techniques**.

Mot de passe oublié, ou téléphone de double authentification perdu, sans autre administrateur ? Crée par FTP le fichier `data/reset.php`, avec exactement ces trois lignes :

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

Dans les 24 heures, connecte-toi avec cet e-mail et ce mot de passe, qui doit respecter les règles habituelles (10 caractères au moins). Le mot de passe est remplacé, la double authentification du compte désactivée, tes autres sessions fermées et le fichier supprimé. Sans la première ligne, le fichier est refusé et effacé. De même, si l'installation affiche « Installation verrouillée », supprime `data/install-window.php` : la fenêtre de 2 heures se rouvre.

## Comment mettre à jour Éclair sans rien casser ?

![Mise à jour d'Éclair : remplacer app et assets, garder data et media](https://eclair.academy/media/2026/11/eclair-academy-update-fr.png)
*Ce qu'une mise à jour remplace, et ce qu'elle ne touche jamais.*

1. Télécharge une sauvegarde : **Sécurité › Télécharger une sauvegarde**, avec ton mot de passe.
2. Par FTP, supprime les dossiers `app/` et `assets/`, puis envoie ceux de la nouvelle version avec `index.php` et `.htaccess`. Supprimer d'abord évite de garder d'anciens fichiers, que le contrôle d'intégrité signalerait comme inconnus.
3. Ne touche ni à `data/` (contenus, réglages, comptes, CSS personnalisé), ni à `media/` (images), ni à `eclair-config.php`.
4. Dans **Réglages › Avancé**, clique sur **Vider le cache** : les pages enregistrées pointent encore vers les anciennes versions des fichiers statiques.
5. Lance **Analyser maintenant** : seuls tes éventuels gabarits personnalisés doivent apparaître.

En SSH, les étapes 2 et 3 tiennent en quatre commandes, l'archive contenant un dossier `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 .
```

## Sauvegardes hors site et droits des fichiers

Pas de sécurité avancée sans sauvegarde hors site. La sauvegarde ZIP contient `data/` et `media/`, sans les sessions, les compteurs, le dossier `ai/` (conversations et connexions MCP), `vault.php` ni `reset.php`. Pour restaurer, remplace `data/` et `media/` par ceux de l'archive, vide le cache, puis saisis de nouveau tes clés d'API et reconnecte Claude ou ChatGPT. Range au moins une copie hors de l'hébergement, et fais-en une avant chaque mise à jour.

Sur un VPS, automatise la même sauvegarde avec `tar`, en excluant les mêmes éléments :

```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
```

Côté droits, Éclair n'écrit que dans `data/`, `cache/` et `media/`. Sur un VPS, seuls ces trois dossiers doivent appartenir à l'utilisateur de PHP ; le code (`app/`, `assets/`, `index.php`) peut rester en lecture seule pour lui, et `eclair-config.php` lisible par PHP mais pas par les autres comptes. Sur un mutualisé, garde les dossiers en 755, comme le demande l'assistant d'installation.

## Sécurité avancée : HSTS, administration et pare-feu

- **HSTS** (**Réglages › Avancé**) : Éclair envoie `Strict-Transport-Security: max-age=31536000`, un an, sans les sous-domaines. N'active cette option qu'une fois le HTTPS parfaitement stable.
- **Adresse de l'administration** (**Réglages › Avancé**, 3 à 40 caractères : minuscules, chiffres, tirets) : une adresse personnelle éloigne les robots. Ni le bouton **Modifier** du site ni la découverte du connecteur MCP ne la révèlent : note-la bien.
- **Pare-feu applicatif** : Éclair n'en a pas besoin, mais tu peux ajouter une couche, comme les règles OWASP CRS avec ModSecurity ou le pare-feu de ton CDN. Teste ensuite l'enregistrement dans l'éditeur, `/_eclair/` et `/.well-known/` : ces requêtes contiennent du JSON et du HTML qui déclenchent parfois des faux positifs.

## Surveillance et révocation des accès MCP

La carte **Niveau de protection** de la page **Sécurité** résume sept points : HTTPS imposé, adresse du site vérifiée, double authentification pour tous les administrateurs, adresse d'administration personnalisée, PHP 8.2 ou plus, mots de passe en Argon2id, HSTS. Vise 100 %.

| Fréquence | Action |
| --- | --- |
| chaque mois | lire le niveau de protection et le journal de sécurité, lancer l'analyse d'intégrité, ranger une sauvegarde hors site |
| à chaque version | suivre la procédure de mise à jour, puis relancer l'analyse |
| chaque trimestre | relire les comptes dans **Utilisateurs** et couper les applications MCP inutiles |
| en continu | une surveillance de disponibilité externe, qui t'alerte si le site ne répond plus |

Pour révoquer le connecteur MCP, clique sur **Couper l'accès** face à l'application dans **Réglages › Assistant IA**. Décocher **Autoriser les connexions MCP** coupe toutes les applications d'un coup, tout comme un changement de mot de passe ou **Déconnecter mes autres appareils** dans ton profil. Les jetons d'accès durent une heure, et seules leurs empreintes sont stockées.

## À retenir

- La sécurité avancée d'Éclair repose sur des protections vérifiées par une revue offensive et rejouées par les tests automatiques.
- Définis `ECLAIR_SECRET` avant d'enregistrer des clés d'API, et garde la phrase hors du site.
- Une mise à jour remplace `app/` et `assets/`, garde `data/`, `media/` et `eclair-config.php`, puis vide le cache.
- Le contrôle d'intégrité, mensuel et après chaque mise à jour, repère fichiers modifiés, inconnus et suspects.
- `data/reset.php` rend l'accès en 24 heures, sans aide extérieure, à qui contrôle le FTP.

## Pour aller plus loin

- [La sécurité au quotidien](https://eclair.academy/parcours/intermediaire/securite-quotidien) : double authentification, rôles et sauvegarde en un clic.
- [Comprendre le connecteur MCP](https://eclair.academy/parcours/ia-mcp/comprendre-mcp) : jetons, accords et droits des applications.
- [Nginx, VPS, proxy et CDN](https://eclair.academy/parcours/expert/nginx-vps) : HTTPS, HSTS et adresse IP réelle hors d'Apache.
- OWASP : [aide-mémoire sur le stockage des mots de passe](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html), d'où viennent les réglages Argon2id d'Éclair.
- PHP : [versions maintenues et dates de fin de support](https://www.php.net/supported-versions.php).

## Questions fréquentes

### La sauvegarde ZIP contient-elle mes clés d'API ?

Non : `vault.php` et le dossier `ai/` en sont exclus. Après une restauration, saisis de nouveau tes clés dans **Réglages › Assistant IA** et reconnecte tes applications MCP.

### Que faire si le contrôle d'intégrité signale un fichier suspect ?

Traite-le comme une intrusion, sans attendre. La marche à suivre est décrite dans la section sur le contrôle d'intégrité : sauvegarde, copie pour analyse, suppression, nouveaux mots de passe et recherche de la faille.

### Que se passe-t-il si je perds eclair-config.php et ECLAIR_SECRET ?

Seules les clés d'API deviennent illisibles : le reste du site fonctionne. Recrée le fichier avec une nouvelle phrase, puis saisis de nouveau tes clés.

### Faut-il un pare-feu applicatif pour Éclair ?

Ce n'est pas nécessaire, ses protections sont intégrées. Si tu en ajoutes un, vérifie qu'il laisse passer l'éditeur, `/_eclair/` et `/.well-known/`.
