Middleware & Sécurité
Runique intègre des middlewares de sécurité configurables appliqués automatiquement dans l'ordre optimal via le système de slots.
| Module | Description |
|---|---|
| Protection CSRF | Token, Double Submit Cookie, AJAX |
| Content Security Policy | Nonce, profils, headers |
| Sessions | Store, durées, accès dans les handlers |
| Hosts & Cache | Allowed Hosts, Cache-Control, headers de sécurité |
| Builder & configuration | Builder classique, Builder Intelligent, variables d'env |
| Rate Limiting | Limitation de débit par IP, par route, configurable |
| Login Required | Protection de routes — redirige si non authentifié |
| CORS | Cross-Origin Resource Sharing — origines, credentials, preflight |
| Proxies de confiance | IP client réelle, RFC 1918, CIDR, ClientIp |
| Permissions-Policy | Restrictions d'API navigateur par header HTTP |
| Open Redirect | Blocage automatique des redirections vers des origines externes |
Stack d'exécution
Requête entrante
↓
slot 0 Extensions → Injection Engine, Tera, Config (toujours actif)
slot 2 TrustedProxies → IP client réelle depuis X-Forwarded-For (toujours actif)
slot 5 Compression → Compression des réponses (toujours actif)
slot 8 CORS → Cross-Origin Resource Sharing (si with_cors() configuré)
slot 10 ErrorHandler → Capture et rendu des erreurs (toujours actif)
slot 20+ Custom → Vos middlewares personnalisés
slot 25 OpenRedirect → Blocage redirections externes (toujours actif)
slot 30 SecurityHeaders → X-Frame-Options, HSTS, Permissions-Policy… (toujours actif)
slot 31 CSP → Content Security Policy (toujours actif)
slot 40 Cache → No-cache en développement (toujours actif)
slot 50 Session → Gestion des sessions (toujours actif)
slot 55 SessionUpgrade → Upgrade session anonyme → authentifiée (toujours actif)
slot 57 Auth → Chargement CurrentUser depuis la session (toujours actif)
slot 60 CSRF → Protection Cross-Site Request Forgery (toujours actif)
slot 70 HostValidation → Validation des hosts autorisés (si with_allowed_hosts() configuré)
↓
Handler (votre code)
Slots "toujours actif" : ces middlewares s'appliquent à toutes les requêtes sans configuration supplémentaire. Les autres ne s'insèrent dans la stack que si leur méthode builder correspondante est appelée.