H1 — trusted_proxies RFC-1918 dans framework.yaml : rate limiting
opérationnel derrière Traefik (IP client réelle, pas IP Traefik)
H2 — En-têtes HTTP dans Caddyfile : X-Frame-Options DENY,
X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy,
suppression header Server
H3 — API Platform docs désactivés en when@prod (Swagger UI, ReDoc)
M1 — Rate limiter sur DELETE /api/push/subscribe (manquant)
M2 — Validation FILTER_VALIDATE_URL sur endpoint push avant stockage
M3 — APP_ENV=prod dans backend/.env (était dev — risque si .env.local absent)
M4 — Limite 4096 octets sur le body JSON (FeedbackController + PushController)
M5 — Service Worker : open redirect corrigé (targetUrl validé contre l'origine)
B1 — robots.txt créé (bloque /api/ et /bundles/)
B3 — --time-limit=3600 sur les workers Messenger (rotation + libération mémoire)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
836 B
Bash
20 lines
836 B
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
# Warmup du cache Symfony au démarrage (les vars d'env sont disponibles ici)
|
|
php bin/console cache:warmup --env=prod --no-debug 2>&1 || true
|
|
|
|
# Worker scheduler — réveille le pipeline toutes les 6h
|
|
# --time-limit=3600 : redémarre le process toutes les heures (rotation naturelle + libération mémoire)
|
|
php bin/console messenger:consume scheduler_main \
|
|
--env=prod --no-debug --memory-limit=64M --time-limit=3600 \
|
|
2>&1 | tee -a var/log/scheduler.log &
|
|
|
|
# Worker async — exécute les messages d'ingestion déclenchés par le scheduler
|
|
php bin/console messenger:consume async \
|
|
--env=prod --no-debug --memory-limit=256M --time-limit=3600 \
|
|
2>&1 | tee -a var/log/worker.log &
|
|
|
|
# Lance FrankenPHP (comportement par défaut de l'image de base)
|
|
exec frankenphp run --config /etc/caddy/Caddyfile "$@"
|