From 811c3a07738ff345e03220e61f2b933d2905d864 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 22 Aug 2026 12:02:05 +0000 Subject: [PATCH] =?UTF-8?q?audit(ui):=20documenter=20la=20d=C3=A9pendance?= =?UTF-8?q?=20CSRF=20des=20formulaires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ui-audit/BUGS.md | 11 +++++++++++ docs/ui-audit/PROGRESS.md | 3 +++ docs/ui-audit/REPORT.md | 2 ++ 3 files changed, 16 insertions(+) diff --git a/docs/ui-audit/BUGS.md b/docs/ui-audit/BUGS.md index fd05c1c..f7764f0 100644 --- a/docs/ui-audit/BUGS.md +++ b/docs/ui-audit/BUGS.md @@ -198,3 +198,14 @@ - Attendu : masquer le lien si l'accès est refusé, ou attribuer/vérifier la permission réellement requise par la route. - Impact : incohérence UI/backend et perte de temps pour l'utilisateur. + +## UI-021 — Certains formulaires planning dépendent de l'injection JavaScript du CSRF + +- Priorité : P2 +- URLs : `/planning/availability/closure/new`, `/planning/tasks/new` +- Résultat : le HTML initial ne contient pas de champ caché `csrf_token` ; le + jeton est ajouté par le JavaScript global. Une soumission sans JavaScript + reçoit bien 400, mais le formulaire ne peut alors pas être utilisé. +- Attendu : rendre le champ CSRF dans le formulaire serveur, tout en gardant + l'injection JS comme secours pour les requêtes dynamiques. +- Impact : dépendance inutile à JavaScript et accessibilité dégradée. diff --git a/docs/ui-audit/PROGRESS.md b/docs/ui-audit/PROGRESS.md index 68398d6..39d4d5f 100644 --- a/docs/ui-audit/PROGRESS.md +++ b/docs/ui-audit/PROGRESS.md @@ -93,6 +93,9 @@ terminé. `TEST_UI_*` créés, puis retrouvés dans `/prevention/` après redirection. - Export DUERP : `/prevention/duerp.csv` répond 200 avec un CSV UTF-8 et un nom de fichier de téléchargement correct. +- Les formulaires de fermeture et de nouvelle tâche planning s'appuient sur + l'injection JavaScript du CSRF ; sans ce script, aucun champ caché n'est + présent et le serveur renvoie 400 (UI-021). - API anonyme : `/api/v1/status`, `/api/v1/equipments` et `/api/v1/interventions` renvoient chacun 401 JSON avec un message d'authentification, conformément au deny-by-default. diff --git a/docs/ui-audit/REPORT.md b/docs/ui-audit/REPORT.md index f63e5f2..32efb58 100644 --- a/docs/ui-audit/REPORT.md +++ b/docs/ui-audit/REPORT.md @@ -39,6 +39,8 @@ l'intervention de test sans équipement. - P2 : le lien Journaux est visible pour le compte d'audit mais `/logs/` renvoie 403 ; le filtrage de menu et la permission de route doivent être alignés (UI-020). +- P2 : certains formulaires planning ne rendent pas le champ CSRF côté + serveur et dépendent de JavaScript (UI-021). - P2 : clarifier `/planning/availability`, qui reprend le titre et la structure de `/planning/time`.