# Walk The Line — V16.9 — Préproduction, sécurité & diagnostic

## Objectif
Préparer le site pour un hébergement Debian 12 / Apache 2.4 / PHP 8.2 en HTTPS direct, et fournir un diagnostic simple depuis le back-office.

## Changements applicatifs

- Cookies de session : `Secure=auto`, `HttpOnly`, `SameSite=Lax`.
- Cookie remember-me : même politique de sécurité.
- Headers HTTP communs :
  - `X-Content-Type-Options: nosniff`
  - `X-Frame-Options: SAMEORIGIN`
  - `Referrer-Policy: strict-origin-when-cross-origin`
  - `Permissions-Policy: camera=(), microphone=(), geolocation=()`
  - HSTS en environnement `prod` uniquement lorsque Symfony détecte réellement HTTPS.
- CSP spécifique au frontend public, compatible avec les médias locaux et reCAPTCHA v3.
- `X-Robots-Tag` dynamique : local et sous-domaines (`demo.`, `staging.`, etc.) restent `noindex` même en `APP_ENV=prod`.
- Les sous-domaines de démo/staging ne sont plus redirigés en 301 vers le domaine principal ; les alias racine / `www` continuent à suivre la logique canonique.
- Suppression de l'ancien `X-Robots-Tag: noindex` global dans `.htaccess`, qui aurait également bloqué le futur domaine principal.
- `Options -Indexes` dans `.htaccess`.
- Bloc **État du site public** dans `Configuration du projet > Site public & communications` : environnement, PHP SAPI web, HTTPS détecté, indexation, APP_SECRET, SMTP, reCAPTCHA, domaine principal, robots et sitemap.

## Apache — demo.walktheline.fr
Un exemple adapté au serveur de démonstration est fourni dans :

`deployment/apache/demo.walktheline.fr.conf`

Il utilise des logs dédiés et interdit le listing des répertoires.

## Droits recommandés sur le serveur
Le répertoire `var/` ne doit pas rester en `777`.

```bash
cd /var/www/html/demo-wtl
chown -R www-data:www-data var
find var -type d -exec chmod 775 {} \;
find var -type f -exec chmod 664 {} \;
```

Pour éviter de recréer du cache appartenant à `root`, lancer les commandes Symfony qui écrivent dans `var/` avec l'utilisateur web :

```bash
sudo -u www-data APP_ENV=prod php bin/console cache:clear
sudo -u www-data APP_ENV=prod php bin/console cache:warmup
```

## Déploiement de cette version
Aucune migration Doctrine.

```bash
cd /var/www/html/demo-wtl
git pull
composer install --no-dev --optimize-autoloader
sudo -u www-data APP_ENV=prod php bin/console cache:clear
sudo -u www-data APP_ENV=prod php bin/console cache:warmup
php bin/console doctrine:schema:validate
php bin/console doctrine:schema:update --dump-sql
```

Le dernier `dump-sql` doit rester vide.

## Contrôles depuis le navigateur

- `https://demo.walktheline.fr/robots.txt` doit contenir `Disallow: /`.
- Les pages publiques du sous-domaine doivent renvoyer `X-Robots-Tag: noindex, nofollow, noarchive, nosnippet`.
- Dans le BO, `Site public & communications` doit indiquer **HTTPS détecté** et afficher le vrai SAPI utilisé par Apache (`fpm-fcgi` ou `apache2handler`).
- Le test SMTP peut être lancé depuis ce même écran lorsque ses paramètres sont renseignés.
- reCAPTCHA doit être configuré avec une clé dont `demo.walktheline.fr` fait partie des domaines autorisés.

## Remarque HSTS
La V16.9 envoie `Strict-Transport-Security: max-age=31536000` en prod/HTTPS mais pas `includeSubDomains`. Le domaine principal pourra adopter une politique plus stricte plus tard, une fois tous les sous-domaines assurés en HTTPS.
