Sécurité — guide opérationnel
Le modèle de sécurité complet (menaces, décisions, défenses) est dans security-model.md.
Ce document résume l'opérationnel.
Liste de contrôle de mise en production
-
AUTH_SECRETunique généré (openssl rand -hex 32) -
OPENROUTER_API_KEYprésente uniquement dans.envserveur (gitignoré) -
APP_URL=https://…(active cookiesSecure+ vérification d'origine) - Compte
admininitial : mot de passe changé, compte personnel créé, puisDISABLE_INITIAL_ADMIN=trueet compte d'amorçage désactivé -
SIGNUP_ACCESS_CODEdéfini (inscription réservée aux étudiants du cours) - Budgets ajustés (Admin → Paramètres)
- Sauvegardes planifiées (
scripts/backup.shen cron) - HTTPS (ngrok domaine réservé ou reverse-proxy TLS)
Rappels clés
- Mots de passe : bcrypt coût 12 ;
admin123refusé comme mot de passe permanent ; 10 caractères min. - Sessions : jeton 256 bits, haché en base, httpOnly, SameSite=Lax, 14 jours, révocables.
- Anti-bruteforce : 8 échecs / 15 min / (IP+identifiant) + journal
auth_events. - CSRF : vérification
Sec-Fetch-Site/Originsur toutes les mutations. - XSS : Markdown rendu sans HTML brut ; en-têtes CSP/nosniff/DENY.
- Isolation : espaces de connaissances filtrés en SQL sur chaque requête RAG et chaque accès
citation ; matériel d'examen dans
instructor-private, jamais servi aux étudiants. - Injection de prompt : contenus récupérés et fichiers étudiants encadrés comme données ; le serveur ne fournit au modèle que des fragments auxquels l'utilisateur a déjà droit ; citations hors contexte neutralisées.
- Vie privée : agrégats professeur ≥ 3 étudiants ; conversations étudiantes non consultables (sauf message signalé par l'étudiant).
- Secrets : jamais journalisés ; messages d'erreur client génériques.