veilletech.fr
2 nov.

Source · 73 jours de veille

Symfony

Ce qui a été retenu de cette source, et sur quels thèmes. Chaque fiche est une synthèse originale et renvoie à l'article d'origine.

43fiches
39jours sur 73
98min de lecture
PHP & CMSthème

Symfony 8.2 : le contrôleur rattrape ses attributs

Symfony 8.2 permet à un contrôleur de reprendre la main quand un attribut échoue : il suffit d'un argument nullable typé avec l'exception concernée. Cela évite de retirer #[IsSignatureValid] ou #[RateLimit] pour afficher un message utile. Mais le contrôleur s'exécute alors malgré l'échec, et doit tester l'argument lui-même.

1 nov.1 min

SYMFONY

Symfony : le correctif de mai n'était jamais sorti

Symfony reconnaît que le correctif de CVE-2026-45070, annoncé en mai, n'a jamais été livré : le commit n'avait été fusionné dans aucune branche de maintenance. Il arrive seulement dans 5.4.55, 6.4.49, 7.4.22 et 8.1.10. La branche 8.0, plus maintenue, doit passer en 8.1.10.

30 oct.1 min

SYMFONY

Symfony 8.2 : Messenger lisible hors de PHP

Symfony 8.2 ajoute messenger.transport.interop_serializer : les messages partent sans stamps PHP, avec un corps JSON et des en-têtes lisibles depuis n'importe quel langage. Des stamp header mappers conservent l'identité du message en en-têtes ordinaires. Sur un transport signé, l'ordre de mise à jour compte.

30 oct.2 min

SYMFONY

Symfony 8.2 : génériques dans le Serializer

Symfony 8.2 apprend au Serializer et à TypeInfo à résoudre les génériques déclarés en PHPDoc : une propriété typée Page<Product> dénormalise enfin ses éléments en Product. Deux changements de comportement accompagnent la nouveauté : un élément d'union non résolu lève une exception, et une propriété typée list recevant un objet JSON déclenche une dépréciation, qui deviendra une exception en Symfony 9.0.

29 oct.3 min

SYMFONY

Symfony 8.2 : l'inbox Messenger contre les doublons

Symfony 8.2 ajoute à Messenger une option inbox qui note, dans la même transaction que les handlers, les messages déjà traités dans une table messenger_inbox, et ignore leurs redistributions. C'est la contrepartie de l'outbox : plus besoin de rendre chaque handler idempotent à la main. Elle exige le bridge Doctrine, la même connexion que les handlers, et une rétention supérieure au délai de redistribution.

27 oct.2 min

SYMFONY

Symfony AI 1.0.0-BETA1 : dernière fenêtre avant la 1.0

Symfony AI 1.0.0-BETA1 est la première préversion avant la 1.0 : le périmètre est arrêté, et la promesse de compatibilité ascendante ne démarre qu'à la version finale. Le SDK PHP officiel de MCP (mcp/sdk) vise la 1.0 en parallèle. Un hackathon en ligne, du 26 octobre au 22 novembre 2026, sert à faire remonter ce qui casse avant la sortie.

27 oct.2 min

SYMFONY

Symfony 8.2 : MongoDB pour le cache et Messenger

Symfony 8.2 ajoute MongoDB au composant Cache (MongoDbAdapter, MongoDbTagAwareAdapter) et à Messenger (transport fondé sur facile-it/mongodb-messenger-transport), en plus des sessions et des verrous déjà pris en charge. Le transport lit plusieurs files en une requête et permet d'enregistrer un message dans la même transaction que les données.

24 oct.2 min

SYMFONY

Symfony 8.2 : HttpClient lit enfin les trailers HTTP

HttpClient de Symfony 8.2 expose les trailers HTTP, ces en-têtes envoyés après le corps de la réponse, qu'il jetait jusqu'ici. Ils se lisent dans une nouvelle information trailers, nulle tant que le transfert n'est pas terminé. Le handler Guzzle gère aussi l'option on_trailers.

23 oct.2 min

SYMFONY

Symfony 8.2 : signer les messages par transport

Symfony 8.2 déplace la signature des messages Messenger du handler vers le transport : tout message non signé est refusé avant d'être lu. Elle permet aussi de faire tourner les secrets de signature sans toucher à kernel.secret, via des listes où le premier secret signe et tous vérifient. À activer sur un transport sans message en attente.

22 oct.3 min

SYMFONY

Symfony 8.2 : JSON Schema généré depuis vos types PHP

Symfony 8.2 introduit le composant JsonSchema, qui génère des schémas JSON Schema à partir des types PHP, en suivant les métadonnées du serializer et les contraintes de validation. Il sait produire des schémas OpenAPI 3.1 ou 3.0 et décrire les paramètres d'une méthode PHP pour un outil d'agent ou de serveur MCP. Il demande PHP 8.2 et fonctionne avec les composants Symfony 7.4 (Antoine Bluchet, #66685).

21 oct.3 min

SYMFONY

Symfony 8.2 : trans_html, du HTML traduit sans raw

Symfony 8.2 ajoute le filtre Twig trans_html : la traduction ne contient plus que des pseudo-balises sans attributs, que le template associe aux éléments HTML à produire. Symfony rend les balises déclarées et échappe tout le reste (texte, paramètres, valeurs d'attributs, balises non déclarées), ce qui supprime le recours à raw et le risque d'XSS qui l'accompagne. Une classe HtmlTranslator couvre le même besoin côté PHP (Hugo Alliaume, #66690).

20 oct.2 min

SYMFONY

Symfony 8.2 : #[Encrypted] chiffre vos colonnes

Symfony 8.2 ajoute l'attribut #[Encrypted] : posé sur une propriété d'entité Doctrine, il chiffre la valeur avant l'écriture, la stocke en binaire et la déchiffre à la lecture, grâce au nouveau composant KeyManagement. Les types Doctrine nécessaires sont créés à la compilation du conteneur ; une entité hors de src/Entity/ ou mappée en XML demande une déclaration dans doctrine_dbal.types.

19 oct.3 min

SYMFONY

Symfony 8.2 : #[Lock] verrouille un contrôleur

Symfony 8.2 ajoute l'attribut #[Lock] : une seule requête à la fois par clé sur un contrôleur, 409 Conflict pour les requêtes concurrentes, verrou partagé avec read: true, clés construites avec des marqueurs {nom}. Trois pièges : un TTL de 30 s non renouvelé, une option blocking sans délai, et un verrou pris avant #[IsGranted].

17 oct.2 min

SYMFONY

Symfony : trois CVE, visez 6.4.48 et 7.4.21

Symfony a publié le 15 octobre trois avis de déni de service sans authentification : un ReDoS dans HeaderUtils::split() via l'en-tête Cache-Control (CVE-2026-108082), une récursion non bornée dans le lexeur YAML (CVE-2026-109413) et une imbrication non bornée dans ExpressionLanguage (CVE-2026-109449). Les premiers correctifs étaient incomplets ou régressifs : il faut viser 5.4.54, 6.4.48, 7.4.21 ou 8.1.9.

16 oct.3 min

SYMFONY

Symfony 8.2 : des workflows déclarés par attributs

Symfony 8.2 permet de définir un workflow ou une machine à états avec des attributs PHP : #[AsWorkflow] sur une classe de service, #[Transition] sur des constantes, #[Place] sur les cas d'une énumération. La classe est un service ordinaire, qui porte aussi ses écouteurs. Toutes les options de la configuration restent disponibles.

15 oct.2 min

SYMFONY

Symfony 8.2 : la déconnexion passe en POST

Symfony 8.2 permet de n'accepter que POST sur la route de déconnexion, avec les fonctions Twig logout_form() et logout_button() pour générer le formulaire. Elle permet aussi de supprimer la redirection après déconnexion (logout.target: null) et prend en charge le back-channel logout d'OpenID Connect.

14 oct.2 min

SYMFONY

Symfony 8.2 : exiger une clé de sécurité

Symfony 8.2 enregistre dans le jeton de sécurité les méthodes d'authentification prouvées pendant la session, avec la date de dernier usage de chacune, selon les noms de la RFC 8176. Un voter peut alors réclamer une ré-authentification plus forte, par exemple une clé de sécurité, via requestReAuthentication(), et OpenID Connect transmet la demande par acr_values. Le fournisseur reste libre d'authentifier autrement : la réponse se lit dans oidc_acr.

13 oct.2 min

SYMFONY

Symfony 8.2 : des URLs signées à usage unique

Symfony 8.2 ajoute un argument $version à UriSigner : sa valeur entre dans la signature sans figurer dans l'URL, ce qui permet des liens à usage unique (le hash du mot de passe, par exemple). Signer sans expiration est déprécié et sera refusé en 9.0, et les liens de connexion peuvent désormais signer des paramètres supplémentaires.

10 oct.2 min

SYMFONY

Symfony 8.2 : EntityExists, Cron et Audio

Symfony 8.2 ajoute trois contraintes au Validator : EntityExists vérifie qu'un identifiant reçu dans un DTO correspond bien à une entité, Cron valide une expression avec un vrai analyseur, et Audio contrôle durée, débit, canaux ou codec d'un fichier. Deux pièges : EntityExists laisse passer null et la chaîne vide, et Audio exige ffprobe sur le serveur.

9 oct.2 min

SYMFONY

Symfony 8.2 : l'ordre des listeners se dit par nom

Symfony 8.2 ajoute les options before et after pour placer un listener ou un service tagué par rapport à un autre, désigné par son identifiant ou sa classe, au lieu de deviner une priorité. Les décorateurs gagnent within et around. L'ordre est résolu à la compilation du conteneur, et les contraintes impossibles y échouent.

7 oct.2 min

SYMFONY

Symfony 8.2 : le CDN a son propre Cache-Control

Symfony 8.2 gère les en-têtes Cache-Control ciblés de la RFC 9213 : une méthode cacheControl('CDN') sur la réponse pose des règles propres au CDN, distinctes de celles du navigateur. Il ajoute aussi l'en-tête Cache-Status de la RFC 9211, désactivé par défaut, qui dit si la réponse vient du cache, de l'application ou d'une revalidation.

6 oct.2 min

SYMFONY

Symfony 8.2 : API plus rapides, et les 4xx en warning

Nicolas Grekas a profilé Symfony Demo et une API, et transformé chaque constat en pull request : listes sérialisées 14 à 24 % plus rapides, POST de production 4 à 5 % plus rapides, POST de développement jusqu'à 38 %. Un changement de comportement accompagne la série : les réponses 4xx sont journalisées en warning et plus en error, ce qui ne déclenche plus fingers_crossed et peut faire taire des alertes.

3 oct.3 min

SYMFONY

Symfony 8.2 : un nom de champ par version d'API

Symfony 8.2 assouplit les groupes de sérialisation : #[SerializedName] et #[SerializedPath] acceptent un argument groups, deux options de contexte excluent des groupes ou appliquent les groupes implicites du Validator, et les contrôleurs comme Messenger peuvent choisir un sérialiseur nommé. Un champ renommé en v2 n'exige plus un second DTO, et régler le sérialiseur de l'API ne change plus le format des messages.

2 oct.2 min

SYMFONY

Symfony 8.2 : le mode sudo redemande le mot de passe

Symfony 8.2 ajoute un mode sudo : IS_AUTHENTICATED_RECENTLY (identifiants saisis dans les deux dernières heures) et IS_AUTHENTICATED_VERY_RECENTLY (cinq minutes) protègent les actions sensibles, et un point d'entrée de réauthentification redemande le mot de passe au lieu de renvoyer une 403. Une session tenue par un cookie remember-me ne passe jamais ces contrôles.

1 oct.2 min

SYMFONY

Symfony 8.2 : le mail chiffré PGP, et un piège S/MIME

Symfony 8.2 ajoute la signature et le chiffrement PGP/MIME (RFC 3156) aux e-mails, via le binaire gpg et deux en-têtes. Le chantier a mis au jour un défaut de l'existant : en S/MIME, un seul destinataire sans certificat suffisait à envoyer le message en clair à tous. L'option on_missing_certificate permet désormais d'échouer ou d'écarter ce destinataire, mais le comportement par défaut ne change qu'avec Symfony 9.

30 sept.2 min

SYMFONY

Symfony 8.2 : le login OpenID Connect sans bundle

Symfony 8.2 ajoute `oidc_login`, un authenticator natif qui implémente tout le flux Authorization Code d'OpenID Connect : plus besoin de bundle tiers pour un bouton « Se connecter avec… ». Les vérifications sensibles sont actives par défaut (state, nonce, PKCE, signature JWKS, claims), le renouvellement des jetons et la déconnexion chez le fournisseur sont prévus. Attention : sans option, la déconnexion reste locale.

29 sept.3 min

SYMFONY

Symfony Reprise 1.3 : la CSP ne bloque plus le JS

Reprise, l'intégration de Vite et Rsbuild dans Symfony, sort en 1.3.0. Sous une CSP à nonce, ses balises `modulepreload` et ses en-têtes `Link:` n'avaient pas de nonce : le navigateur les bloquait et le JavaScript ne tournait pas. C'est corrigé, comme la lecture d'un `entrypoints.json` vide pendant sa réécriture ; Stimulus se recharge aussi sans redémarrer le serveur de développement.

29 sept.3 min

SYMFONY

Symfony 8.2 : Messenger traite enfin en parallèle

Symfony 8.2 ajoute l'option --concurrency à messenger:consume : un seul worker distribue les messages à un pool de processus enfants, 7,5 fois plus vite sur des messages de 20 ms. Le transport AMQP gagne le préchargement par prefetch_count, de 13 à 18 fois plus rapide en local, et un middleware journalise durée et mémoire de chaque message.

26 sept.3 min

SYMFONY

Symfony 8.2 : le suivi d'e-mail, message par message

Symfony 8.2 ajoute RemoteTemplateEmail, qui envoie un modèle conçu dans l'éditeur du fournisseur au lieu d'un gabarit Twig, et TrackingHeader, qui règle le suivi des ouvertures et des clics e-mail par e-mail. Une option tracking coupe le suivi par défaut, utile quand il dépend du consentement de chaque destinataire.

25 sept.2 min

SYMFONY

Symfony 8.2 : un schéma JSON pour config/packages

Symfony 8.2 génère un fichier config/schema.json à chaque compilation du conteneur en mode debug : il décrit la configuration de tous les bundles installés, et l'éditeur peut enfin compléter et valider les fichiers de config/packages/. La commande lint:yaml gagne une option --check-schema pour faire la même vérification en CI.

24 sept.2 min

SYMFONY

Symfony 8.2 : des jokers dans la hiérarchie des rôles

Symfony 8.2 accepte l'astérisque dans les clés de role_hierarchy : ROLE_BLOG_* couvre toute une famille de rôles, y compris ceux qui ne sont déclarés nulle part. Pour garder la main, une commande debug:roles liste les rôles réellement accordés et explique leur origine, et le graphe de la hiérarchie s'affiche dans le panneau Security du profileur.

23 sept.2 min

SYMFONY

Symfony 8.2 : Messenger gagne outbox et claim check

Symfony 8.2 ajoute à Messenger deux options de transport. `outbox` écrit le message en base dans la transaction de l'application, puis un relais le transmet au broker. `claim_check` range les messages trop gros dans un pool de cache PSR-6 et n'envoie qu'une référence vérifiée par somme de contrôle.

22 sept.2 min

SYMFONY

Symfony UX 3.5 : la pagination, et des tests à revoir

Symfony UX 3.5 livre `symfony/ux-pagination`, un paginateur sans JavaScript à trois stratégies, ainsi que le support de Twig 4. Le rendu des attributs de composants passe désormais par Twig : le HTML produit change pour les booléens, `null`, `aria-*` et les tableaux, ce qui fait échouer les tests qui comparent ce rendu.

22 sept.3 min

SYMFONY

Symfony 8.2 : le formulaire dans le DTO

Symfony 8.2 permet de déclarer un formulaire directement sur la classe qui porte les données, avec les attributs #[AsFormType] et #[FormField], au lieu d'écrire une classe de type de formulaire séparée. Tout est résolu à la compilation du conteneur, et rien n'est déprécié.

18 sept.2 min

SYMFONY

Symfony 8.2 : des sous-commandes à la Docker

Symfony 8.2 ajoute les sous-commandes séparées par des espaces (`tenant users import`) à côté des namespaces à deux-points historiques. Ce n'est pas un alias : chaque niveau analyse ses propres options, une commande parente peut exister sans execute() pour porter des options communes, et l'objet CommandChain donne à l'enfant l'entrée de son parent.

17 sept.2 min

SYMFONY

Symfony 8.2 gère vos clés de chiffrement

Symfony 8.2, attendu fin novembre 2026, ajoute le composant KeyManagement : une interface unique devant AWS KMS, Azure Key Vault, Google Cloud KMS et HashiCorp Vault, avec des backends libsodium et OpenSSL pour le développement. Le mode enveloppe chiffre localement en AES-256-GCM avec une clé de données fournie par le KMS, ce qui lève la limite de taille du mode direct (4 Ko sur AWS KMS). Deux ponts Doctrine apportent le chiffrement de colonne et l'index aveugle qui la rend cherchable.

16 sept.3 min

SYMFONY

Symfony Mate ouvre le runtime aux agents

Mate, composant de Symfony AI, donne à un agent de code un accès direct au runtime d'une application Symfony : profiler, logs Monolog et conteneur de services. Depuis Symfony AI 0.13, ce n'est plus un serveur MCP mais un simple CLI doublé d'une couche de découverte qui écrit les instructions dans AGENTS.md et installe cinq skills. Mate lit les artefacts déjà présents sur disque, donc il répond même quand un conteneur cassé empêche l'application de démarrer.

15 sept.3 min

SYMFONY

Symfony démonte FrameworkBundle en vingt bundles

Sur la branche 8.2 en développement, chaque section de configuration de FrameworkBundle part dans un bundle livré par son propre composant : MessengerBundle, HttpClientBundle, CacheBundle, RouterBundle, SerializerBundle, ValidationBundle et une quinzaine d'autres. Deux mécanismes le rendent possible sans casser les configurations existantes : un nœud de configuration peut aliaser celle d'une autre extension, et le tag container.remove_if_missing retire un service quand son paquet n'est pas installé.

13 sept.3 min

SYMFONY

Symfony vérifie vos routes dans la CI

Symfony CLI 5.20 ajoute symfony lsp:check, une version sans éditeur des diagnostics Symfony : routes, templates, traductions, services, configuration. Trente codes de diagnostic, exécutables en CI avec une sortie JSON, GitHub ou SARIF. Ce que PHPStan ne voit pas parce qu'il travaille au niveau des types et dans les fichiers PHP.

1 sept.2 min

SYMFONY

Symfony durcit trois branches le même soir

Symfony a publié le 30 août ses trois branches maintenues d'un coup — 6.4.45, 7.4.18 et 8.1.6 — avec un changelog identique d'une trentaine d'entrées portant presque toutes sur le durcissement de HttpClient, Security, HttpKernel, HttpFoundation et Process. Aucune n'est publiée comme avis de sécurité, donc aucun scanner ne la signalera.

31 août2 min

SYMFONY

Symfony Reprise 1.0 : Encore passe la main

Symfony Reprise atteint la 1.0.0 stable : la couche d'intégration entre Symfony et les bundlers modernes (Vite, Rsbuild) est désormais couverte par la promesse de rétrocompatibilité. Webpack Encore n'est pas déprécié, mais passe en mode maintenance — corrections seulement, plus de nouvelles fonctionnalités.

27 août2 min

SYMFONY

Twig 3.29 : documenter enfin ses templates

Twig 3.29 introduit les commentaires de documentation, une syntaxe standard pour décrire variables, blocs et macros d'un template. Ils n'affectent pas le rendu compilé : Twig attache leur contenu aux nœuds analysés, où IDE, analyseurs statiques et générateurs de documentation peuvent les lire. La fonctionnalité est marquée expérimentale.

22 août3 min

TWIG

Symfony sort son serveur LSP officiel

Symfony sort Symfony Language Tools, son serveur de langage officiel. Jusqu'ici seul PhpStorm comprenait vraiment les chaînes structurantes d'une application Symfony ; VS Code et Neovim étaient laissés de côté. L'extension apporte complétion, navigation, renommage, diagnostics et quick fixes sur PHP, Twig et YAML — en bêta expérimentale.

19 août2 min

SYMFONY