Skip to main content
View as Markdown

Durcissement de la sécurité

Sovrium conçoit pour éliminer les modes de défaillance récurrents des applications non sécurisées — surfaces exposées, authentification manquante, autorisation au niveau de l'objet cassée, points de terminaison énumérables — à la couche de la plateforme, de sorte que chaque application hérite des défenses sans configuration par application. Chaque réponse HTTP porte un ensemble d'en-têtes durcis, le CSRF est appliqué en production, les points de terminaison sensibles sont limités en débit et l'accès non autorisé renvoie 404 plutôt que 403.

Ces garanties sont appliquées dans le code (pas seulement à l'entrée du proxy inverse), de sorte qu'elles tiennent même pour un déploiement auto-hébergé sans proxy attaché.

En-têtes de sécurité HTTP

Chaque réponse — page, API, asset statique ou 404 — porte un ensemble d'en-têtes durcis, appliqué via le middleware secureHeaders de Hono enregistré comme premier middleware * afin qu'il s'exécute avant la correspondance de route et couvre les réponses d'erreur.

En-tête Valeur / comportement
Strict-Transport-Security max-age=31536000; includeSubDomains (HSTS d'un an, couvre les sous-domaines).
X-Content-Type-Options nosniff (désactive le sniffing MIME).
X-Frame-Options SAMEORIGIN / DENY (anti-détournement de clic).
Referrer-Policy strict-origin-when-cross-origin.
Cross-Origin-Opener-Policy same-origin.
Cross-Origin-Resource-Policy same-origin.
Permissions-Policy Refuse la caméra, le microphone, la géolocalisation, le paiement, l'usb, l'accéléromètre, …
Content-Security-Policy-Report-Only default-src 'self', frame-ancestors 'none', object-src 'none', base-uri 'self', form-action 'self', …
Content-Security-Policy (appliqué) Absent — report-only d'abord ; la CSP appliquée à base de nonce est une promotion de Phase 2.

HSTS est émis sans condition même sur du HTTP en clair — les navigateurs l'ignorent sur une connexion http://, et un proxy de terminaison TLS transmet exactement la valeur que le serveur produit.

Application CSRF & Cross-Origin

Sovrium s'appuie sur le middleware de vérification d'origine intégré de Better Auth. Une requête modifiant l'état, porteuse de cookies, dont l'Origin est falsifié ou supprimé est rejetée — une falsification inter-sites ne peut pas chevaucher le cookie de session d'une victime.

Environnement disableCSRFCheck Comportement
NODE_ENV=development true Vérification d'origine contournée — Origin falsifié accepté (DX cross-port local).
NODE_ENV=production false Vérification d'origine active — Origin falsifié / manquant rejeté 403.
  • trustedOrigins est limité à l'origine BASE_URL propre à l'application — jamais '*'. Un caractère générique est un contournement de redirection ouverte / de validation d'origine ; le limiter fait aussi que Better Auth rejette un redirectTo d'origine externe lors de la réinitialisation de mot de passe.
  • useSecureCookies est activé en production. La barrière CSRF et les cookies sécurisés se dégradent silencieusement si NODE_ENV n'est pas défini, de sorte qu'un risque de NODE_ENV manquant est révélé bruyamment dans la bannière de démarrage de production (et supprimé en dev pour garder la sortie propre).

Limitation de débit

Sovrium remplace la limitation de débit native de Better Auth (bugs amont connus) par un middleware Hono personnalisé sur les points de terminaison sensibles.

Point de terminaison Limite Fenêtre
POST /api/auth/sign-in/email 5 tentatives 60 s
POST /api/auth/sign-up/email 5 tentatives 60 s
POST /api/auth/request-password-reset 3 tentatives 60 s
POST /api/auth/admin/* Limite de débit générale par IP

Dépasser une limite renvoie 429 Too Many Requests. Les routes d'administration exécutent en plus un middleware de vérification d'authentification qui renvoie 401 avant la validation des paramètres, de sorte qu'un appelant non authentifié n'apprend jamais la forme d'un point de terminaison protégé.

Anti-énumération : 404, pas 403

L'accès non autorisé à une ressource protégée renvoie 404 Not Found, jamais 403 Forbidden. Un 403 confirme que la ressource existe ; un 404 rend l'existence de la ressource — et l'espace des id — inobservable. Cela s'applique uniformément aux lectures d'enregistrements, au tableau de bord d'administration et au point de terminaison de suppression forcée par table (qui renvoie 404 lorsque la suppression forcée n'est pas autorisée pour cette table).

L'autorisation au niveau de l'objet est appliquée avant l'exécution de toute logique sensible : une requête est authentifiée, puis vérifiée pour l'accès à l'objet spécifique, et en cas d'échec renvoie 404. Combiné à des id indevinables, cela déjoue l'énumération même si le 404 lui-même est observable.

Synthèse défense en profondeur

Préoccupation Mécanisme
Sécurité du transport HSTS (max-age=31536000; includeSubDomains).
MIME / détournement de clic nosniff, X-Frame-Options.
Isolation cross-origin COOP + CORP same-origin, CSP report-only.
CSRF Vérification d'origine Better Auth (production), trustedOrigins limité.
Force brute Limitation de débit par point de terminaison (429).
Énumération 404-pas-403, id indevinables, vérification d'authentification avant validation.
Autorisation RBAC + permissions par champ, vérifications au niveau de l'objet.

Pages connexes