mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
API : un site tiers ne peut plus piloter Loki en douce
Repris d'AJEAN 0.15.5. Sans clé de pilotage (le défaut), l'API /api était ouverte à tout ce qui savait joindre le port — y compris une page web quelconque ouverte dans un navigateur du réseau local. Un POST « simple » (text/plain) ne déclenche aucune pré-vérification CORS : la page pouvait changer des réglages et, mode agent actif, faire exécuter des commandes. requireWebAuth passe désormais par crossSiteReject, AVANT le test de clé : - Sec-Fetch-Site: cross-site → 403 ; - Origin présent et différent de l'hôte appelé (ou « null ») → 403. curl, les scripts et les apps n'envoient pas d'Origin : non concernés ; - sans clé seulement, l'hôte appelé doit être local (IP, localhost, nom sans point, .local/.lan/.home…, nom du conteneur) : c'est ce qui coupe le DNS rebinding, où un domaine malveillant se fait résoudre en IP locale. DEUX ÉCARTS AVEC L'AMONT, DUS AU CONTENEUR - LOKI_TRUSTED_HOSTS : derrière un reverse proxy, le nom public n'est ni local ni celui du conteneur. Plutôt qu'imposer une clé, on peut lister ce nom. Documenté dans le README. - Le trafic du tunnel (marqué par withLocalAuth, authentifié par le relais) est dispensé du contrôle d'hôte : son Host est celui du relais. À SAVOIR : un accès existant par nom de domaine SANS clé ni LOKI_TRUSTED_HOSTS est désormais refusé (403, message explicite). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
513aca1c7b
commit
b893d1a81f
3 files changed
+130
No files matched your search
@@ -124,6 +124,15 @@ redémarrages (volume `/data`). Variables d'environnement du conteneur :
|
||||
| `HF_TOKEN` | jeton Hugging Face, pour les dépôts à accès restreint (repli : le jeton réglé dans l'UI prime) | — |
|
||||
| `LOKI_CHROME` | binaire du navigateur piloté (contrôle du navigateur) ; par défaut le Chromium de Playwright de l'image | — |
|
||||
| `LOKI_CU_HEADFUL` | `1` : ouvre une vraie fenêtre au lieu du mode headless (machine avec écran) | — |
|
||||
| `LOKI_TRUSTED_HOSTS` | noms de domaine autorisés à servir l'UI **sans** clé de pilotage (reverse proxy), séparés par des virgules | — |
|
||||
|
||||
**Accès par nom de domaine.** Sans clé de pilotage, l'API n'accepte que les
|
||||
hôtes locaux (IP, `localhost`, nom sans point, `.local`/`.lan`…) et refuse
|
||||
toute requête venue d'un autre site : une page web ouverte dans un navigateur
|
||||
du réseau ne peut plus piloter Loki en douce (ni par DNS rebinding). Derrière
|
||||
un reverse proxy (`loki.mondomaine.fr`), définir une clé
|
||||
(`docker exec -it loki loki set-web-key`) ou lister le nom dans
|
||||
`LOKI_TRUSTED_HOSTS`.
|
||||
|
||||
En CLI dans le conteneur : `docker exec -it loki loki status` (aussi :
|
||||
`logs`, `restart`, `config`, `bench`, `test`…).
|
||||
|
||||
Reference in new issue
Block a user