diff --git a/README.md b/README.md index ad8e5ce..6fd8a2f 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,19 @@ Consequence visible : - si `API_SECRET_KEY` est vide, les appels API sont refusés avec `401 Unauthorized` - l'application web pose aussi un cookie HTTP-only via `server/middleware/auth-cookie.ts` pour réutiliser ce secret coté navigateur +## Securite + +Le comportement actuel du projet repose sur une hypothèse d'exposition très forte. + +- `server/middleware/auth-cookie.ts` pose automatiquement le cookie `api_auth_token` à tout visiteur qui charge l'interface web +- ce cookie permet ensuite d'accéder aux routes `/api/*` protégées par `API_SECRET_KEY` +- il n'existe pas de login utilisateur ni de contrôle d'identité distinct dans le dépôt + +Conséquence : + +- `Supervisor` doit être déployé uniquement sur un réseau de confiance, derrière un VPN, une restriction d'IP, un proxy d'authentification ou un autre contrôle d'accès externe +- si l'application est exposée publiquement sans protection supplémentaire, ce mécanisme ne constitue pas une authentification suffisante + ### SSH pour les backups Les fonctionnalités de backup utilisent `ssh` avec les options `BatchMode=yes` et `ConnectTimeout=5` dans `server/utils/ssh.ts`. Cela implique un accès sans saisie interactive de mot de passe. @@ -126,4 +139,4 @@ Usage : - `npm run generate` : généré une sortie statique si ce mode est compatible avec votre usage - `npm run preview` : prévisualisé le build Nuxt - `npm run lint` : execute ESLint -- `npm run lint:fix` : applique les corrections ESLint automatiques : collecte périodique CPU, mémoire et réseau \ No newline at end of file +- `npm run lint:fix` : applique les corrections ESLint automatiques : collecte périodique CPU, mémoire et réseau diff --git a/assets/css/main.css b/assets/css/main.css index d7aaddf..f0b5e8c 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -15,7 +15,6 @@ --color-m-success: rgb(var(--m-success)); --color-m-accent: rgb(var(--m-accent)); --color-m-warning: rgb(var(--m-warning)); - --color-m-succes: rgb(var(--m-success)); --font-display: "Outfit", system-ui, sans-serif; --font-mono: "JetBrains Mono", "Fira Code", monospace; } diff --git a/components/BackupRun.vue b/components/BackupRun.vue index 639dce8..4e91e77 100644 --- a/components/BackupRun.vue +++ b/components/BackupRun.vue @@ -77,7 +77,6 @@