Références
Security Considerations
Sécurité
- Protégez les secrets (
MISTRAL_API_KEY,AUTH_SECRET). - Paramétrez CORS, rôles, et permissions (RBAC).
- Surveillez les dépendances et appliquez des mises à jour régulières.
Hachage des mots de passe
- Par défaut, Better Auth utilise l’algorithme
scrypt(mémoire-dur et résistant au brute-force). - Vous pouvez personnaliser le hachage via la config
password(hash/verify) dansapps/server/src/lib/auth.tssi besoin.
Gestion des sessions
Expiration et rafraîchissement
- Config actuelle dans
auth.ts:maxAge: 86400(24h),updateAge: 3600(1h). - À chaque utilisation, si
updateAgeest atteint, l’expiration est prolongée.
Révocation
- Better Auth permet la révocation des sessions (déconnexion côté serveur). Prévoyez des actions UI pour permettre aux utilisateurs de se déconnecter des autres appareils.
Protection CSRF
- Better Auth valide l’en-tête
Origin. Les origines de confiance sont définies viatrustedOriginsdansauth.ts. - Côté Hono (
apps/server/src/index.ts), CORS est configuré aveccredentials: trueet une validation stricte d’origine incluantCORS_ORIGIN.
OAuth : State et PKCE (Microsoft)
- Pour Microsoft OAuth, Better Auth persiste
stateetPKCEpendant le flux afin d’éviter CSRF et injections de code. - Nettoyage après finalisation du flux.
Cookies
- Better Auth émet des cookies sécurisés si
httpsest utilisé. - Attributs :
httpOnlyactivé,sameSitepar défautlax. - Pour multi-sous-domaines, utilisez l’option
crossSubDomainCookiessi nécessaire.
Personnalisation
- Personnalisez les noms/options des cookies pour réduire le fingerprinting et répondre aux contraintes d’infra (proxy/ingress).
Limitation de débit (Rate limiting)
- Better Auth applique un rate limiting de base sur ses routes. En prod, complétez via votre proxy/ingress (ex: NGINX, Cloudflare) pour une défense en profondeur.
Adresse IP et en-têtes
- Par défaut, Better Auth lit
X-Forwarded-For. - Vous pouvez spécifier des en-têtes IP de confiance dans la config avancée, p. ex. :
// apps/server/src/lib/auth.ts
betterAuth({
advanced: {
ipAddress: {
ipAddressHeaders: ["cf-connecting-ip"],
},
},
});Veillez à ce que votre proxy charge bien cet en-tête et qu’il ne soit pas contrôlable par les clients.
Origines de confiance
- Définissez précisément les origines de confiance pour bloquer CSRF et redirections ouvertes :
trustedOrigins: [
"https://example.com",
"https://app.example.com",
"http://localhost:3001", // front en dev
]- Les jokers (
*.example.com) sont acceptés, avec nuances selon le protocole.
Bonnes pratiques projet
- Secrets : stockez
AUTH_SECRET,RESEND_API_KEY,MISTRAL_API_KEY,MICROSOFT_CLIENT_ID/SECRET/TENANT_IDdansapps/server/.env(jamais en clair dans le repo). - CORS : définissez
CORS_ORIGIN(front exact, schéma+host+port). Gardezcredentials: truecôté client (ORPC) pour inclure les cookies. - HTTPS en prod : requis pour cookies
secure. - RBAC : utilisez les procédures
protectedProcedure/adminProcedure(voirapps/server/src/lib/orpc.ts) et validez le rôle depuis le pluginadmin. - Observabilité : surveillez
/healthet/ready, alertez sur pics de 401/403/429.
Signalement de vulnérabilités
Si vous suspectez une faille, ouvrez un ticket interne ou contactez l’équipe responsable de la sécurité. Décrivez le scénario d’attaque, l’impact et, si possible, un correctif proposé.
Kalli