Publié le 27 juillet 2026
Evolutions
- Mise à jour du framework Symfony 6.4.42
- Mise à jour de sécurité (composer et npm).
- Éditeur de modèles d’e-mails : ajout d’un bouton dans la barre d’outils TinyMCE pour insérer en un clic le bouton d’accès.
Modifications
- Import CSV des destinataires : la validation est désormais bloquante (aucun import si une erreur est détectée), avec des messages d’erreur indiquant la ligne et la colonne concernées. Les doublons d’e-mail au sein du fichier sont refusés. Un destinataire déjà existant est ignoré (ni modifié, ni dupliqué) et signalé par un avertissement.
- Modifications des modèles d’e-mails par défaut (génériques et notification).
- Les modèles d’e-mails restés sur un ancien modèle par défaut sont remplacés automatiquement par la nouvelle version.
- Les modèles de notification personnalisés reçoivent automatiquement la nouvelle mise en forme (conteneur + bouton) en conservant leur texte.
Evolution socle technique
- Mise à jour de l’image docker : Alpine
- Mise à jour de l’image docker : Composer
- Mise à jour de l’image docker : libriciel-feedback
- Mise à jour de l’image docker : libriciel-stack-update
Corrections
- [Sécurité] Correction d’une faille XSS.
- [Sécurité] Neutralisation des injections de formules (préfixes =, +, -, @) dans l’export CSV des destinataires.
- [Sécurité] Correction des en-têtes de sécurité nginx.
- [Sécurité] Les clés d’API sont désormais stockées hashées en base de données. La clé en clair n’est affichée qu’une seule fois, lors de sa génération. Les clés existantes sont converties automatiquement par migration et restent valides.
- [Sécurité] Mise en place d’une Content-Security-Policy complète.
- Version texte des e-mails : les liens HTML sont désormais restitués sous la forme « libellé : url » (l’URL portée par le bouton n’est plus perdue).
- [Sécurité] Un destinataire désactivé (ou appartenant à une structure désactivée) ne peut plus se connecter à l’espace de consultation des dossiers.
- [Sécurité] Renforcement des voters d’autorisation : refus explicite.
- [Sécurité] Le champ caché des formulaires ne peut plus être manipulé pour réaffecter un élément.
- [Sécurité] Protection CSRF globale et validation des jetons sur les actions sensibles.
- [Sécurité] Renforcement du rate limiting : limiteur par adresse IP en plus du limiteur par email sur la connexion, throttling de la connexion des destinataires et limitation des demandes de réinitialisation de mot de passe.
- [Sécurité] Ajout d’un « access_control » refusant par défaut l’accès aux routes non publiques et sécurisation de la route de renvoi d’e-mail de réinitialisation.
- [Sécurité] Les API v1 et v2 appliquent désormais les mêmes contrôles de fichiers que le formulaire web (nombre maximum, taille maximale, formats autorisés) ainsi que le scan antivirus lors de la création d’un dossier.
- [Sécurité] Les fichiers d’un dossier sont désormais restreints à une liste de formats autorisés : l’extension doit être connue et le contenu réel du fichier doit correspondre à son extension (vérification du type MIME).
- [Sécurité] Le scan antivirus et le contrôle des formats sont appliqués de manière centralisée lors de l’enregistrement des fichiers : tous les fichiers déposés, y compris via le formulaire web, sont désormais scannés avant d’être stockés.
- [Sécurité] L’import CSV et le logo de structure appliquent le même contrôle que les fichiers d’un dossier : extension autorisée et correspondance du contenu réel avec l’extension (type MIME).
- Les erreurs de validation des champs fichier (CSV, logo) sont désormais affichées dans le formulaire.
- [Sécurité] Redirection systématique vers une page interne de l’application (protection open-redirect).