Middleware & Sécurité

Validation des hosts & Cache-Control

Validation des Hosts (Allowed Hosts)

Fonctionnement

  • Compare le header Host de la requête contre la liste des hosts autorisés
  • Bloque les requêtes avec un host non autorisé (HTTP 400)
  • Protection contre les attaques Host Header Injection

Configuration via le builder

La validation des hosts se configure dans main.rs via le builder — il n'y a pas de variable d'environnement pour cela :

.middleware(|m| {
    m.with_allowed_hosts(|h| {
        h.enabled(!is_debug())
         .host("example.com")
         .host(".api.example.com")  // match example.com ET *.example.com
    })
})

Patterns supportés

  • "localhost" — match exact
  • ".example.com" — match example.com et *.example.com
  • "*" — tous les hosts (⚠️ dangereux en production)

Mode debug

En DEBUG=true, on passe généralement .enabled(!is_debug()) pour désactiver la validation en développement.


Cache-Control

Mode développement (DEBUG=true)

Headers no-cache ajoutés pour forcer le rechargement :

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache

Mode production (DEBUG=false)

Headers de cache activés pour les performances.