Ce que nous avons retenu du Forum PHP 2024, jour 1

JoliCode - JoliCodeBlog - 26/03
Comme chaque année l’équipe de JoliCode était présente au Forum PHP de l’AFUP, le plus gros événement PHP de l’Hexagone, pour deux jours de conférence sur l’éco-système ! Dans cet article nous allons vous partager nos take-aways, ce que nous y avons découvert et ce que nous en retenons.

Comme chaque année l’équipe de JoliCode était présente au Forum PHP de l’AFUP, le plus gros événement PHP de l’Hexagone, pour deux jours de conférence sur l’éco-système !

Dans cet article nous allons vous partager nos take-aways, ce que nous y avons découvert et ce que nous en retenons. Accrochez-vous à vos écrans, on va chez Mickey 🐭 ! Nous avons séparé nos retours en deux articles tant il y avait de choses à raconter, voici donc le jour 1.

Section intitulée creer-sa-malware-sandbox-en-phpCréer sa Malware Sandbox en PHP

Alexandre Daubois, développeur chez Decathlon et contributeur régulier à Symfony, nous a présenté une sandbox pour analyser les malwares, développée en PHP. Avant d’en arriver à cette solution, il a détaillé son parcours pour tenter de sécuriser les fichiers uploadés dans un back-office sécurisé de son entreprise.

Par exemple, pour s’assurer qu’un fichier ne contient pas de virus, plusieurs approches sont possibles. Après avoir mis le fichier en quarantaine :

  • Envoyer le fichier via une API à des éditeurs d’antivirus ;
  • L’analyser soi-même : cela nécessite de prendre des empreintes (fingerprints) du fichier et de les comparer avec des bases de données souvent très coûteuses ;
  • Exécuter le fichier dans une sandbox (VM) et analyser les appels système effectués par l’exécutable.

Toutes ces solutions s’avérant trop onéreuses, Alexandre a décidé de développer une classe PHP capable de vérifier les cas les plus courants de manière plus économique :

  • Vérifier qu’il n’y a pas de caractère non-ASCII dans le nom du fichier ;
  • S’assurer qu’il n’y a pas de tentative de “directory traversal” (un nom de fichier contenant ../) ;
  • S’assurer que le fichier n’a pas de droits d’exécution ;
  • Vérifier les magic bytes (les 4 premiers octets d’un fichier qui définissent son type) pour s’assurer qu’il ne s’agit pas d’un fichier exécutable, en tenant compte à la fois du Big Endian et du Little Endian ;
  • Si le fichier est une archive, appliquer ces contrôles à chaque fichier qu’elle contient.

La conférence s’est déroulée de manière fluide et agréable. Toutefois, bien que la solution proposée soit intéressante, elle nous est apparue un peu simpliste, et nous aurions sans doute attendu quelque chose de plus approfondi.

Section intitulée les-nouveautes-dans-symfony-7-xLes nouveautés dans Symfony 7.x

Nicolas Grekas a présenté les nouveautés de Symfony 7, et même si nous en avions déjà parlé en avril, de nouvelles informations sont venues enrichir cette version.

Parmi les nombreux changements évoqués, on trouve l’ajout de typage natif, l’utilisation des nouvelles syntaxes PHP 8.2, et les « constructor property promotion ». Mais concentrons-nous sur les véritables nouveautés.

Du côté des tests, une avancée notable : PHPUnit 11 deviendra bientôt la version par défaut, et le phpunit-bridge va disparaître. Initialement conçues pour combler certaines lacunes de PHPUnit, comme les rapports de dépréciation, ces fonctionnalités sont désormais pleinement supportées nativement.

Concernant les nombreux bridges de Symfony, on observe une activité intense, comme l’ajout récent d’un connecteur JoliNotif, notre bibliothèque pour déclencher des notifications desktop ! 😍

De nouveaux attributs pour les contrôleurs font leur apparition, notamment les attributs #[Map*] qui permettent de mapper des contenus de requêtes dans des objets ou arguments avec une gestion d’erreurs (4xx) en cas de problème. Mentionnons également #[WhenNot], une version inversée de #[When], permettant d’activer un service uniquement dans certains environnements (dev, test, prod).

À partir de Symfony 7.2, le composant Console pourra gérer des signaux d’alarme via un événement ConsoleAlarmEvent, ce qui facilite la manipulation des processus avec alarme.

En outre, Symfony inclura désormais la possibilité d’avoir des serializers nommés. Cela permet de résoudre des conflits potentiels, notamment avec des outils comme API Platform ou Jane, en évitant que les normalizers se propagent à toute l’application. On pourra ainsi avoir des configurations spécialisées sans effets de bord.

Enfin, plusieurs nouveaux composants sont en discussion, notamment ObjectMapper, JsonEncoder, FeatureFlags, et AccessToken. Le composant Uri est en débat, mais pourrait être intégré directement dans PHP.

Section intitulée comment-deboguer-xdebug-ou-n-importe-quel-autre-bug-bizarre-en-phpComment déboguer Xdebug… ou n’importe quel autre bug bizarre en PHP

Kévin Dunglas, développeur chez les-tilleuls.coop et core contributeur à Symfony, API Platform, FrankenPHP, et autres projets, nous a présenté un cas concret : un bug rencontré dans FrankenPHP et sa résolution.

Qui n’a jamais été confronté à un bug mystérieux, sans savoir par où commencer ? Si vous vous êtes déjà retrouvé dans cette situation, cette conférence est faite pour vous !

À travers plusieurs étapes, Kévin nous a guidés dans l’identification de l’origine potentielle d’un bug : est-ce dû à notre propre code (dépendances à jour, utilisa...
[Courte citation de 8% de l'article original]

Loading...