Symfony 8.1 introduit la variable d'environnement FRANKENPHP_RESET_KERNEL pour résoudre un problème de fuite d'état dans les applications PHP fonctionnant en mode "worker" avec FrankenPHP. Ce mode maintient le processus PHP en vie entre les requêtes pour améliorer les performances, mais crée un risque que l'état de services persistants ne soit pas correctement réinitialisé, ce qui peut entraîner une incohérence ou une exposition involontaire de données entre les requêtes.
Traditionnellement, chaque requête HTTP dans PHP démarrait avec un environnement isolé, garantissant que l'état de l'application était remis à zéro. Le mode worker de FrankenPHP, quant à lui, réutilise le noyau et les services Symfony, offrant un gain de vitesse significatif mais introduisant le risque de propagation d'état non désiré si les services ne sont pas explicitement réinitialisés.
Pour pallier ce risque, Symfony propose l'interface ResetInterface qui permet aux services de vider leur état entre les requêtes. Cependant, cette approche dépend de la bonne implémentation par tous les services, y compris ceux de tiers ou le code hérité. FRANKENPHP_RESET_KERNEL agit comme une mesure de sécurité supplémentaire, garantissant que le noyau est réinitialisé automatiquement, ce qui renforce la robustesse et la sécurité des applications PHP en mode worker.
Ce billet de blog met en garde contre l'utilisation de JWT (JSON Web Tokens) sans une date d'expiration (exp claim). Sans cette date, un JWT peut rester valide indéfiniment, transformant un token compromis en un accès permanent. L'auteur explique que les JWT ne sont pas chiffrés mais signés, et que leur structure comprend des claims comme l'identifiant utilisateur, les rôles et le timestamp d'émission. Il souligne que sans expiration, un token volé peut être utilisé longtemps après sa création, même si l'utilisateur a quitté l'organisation. La solution proposée est d'ajouter une date d'expiration pour limiter la validité des tokens, bien que cela nécessite de les renouveler périodiquement. L'auteur rappelle aussi que certains packages JWT ne vérifient pas automatiquement l'expiration.
Cet article explique comment améliorer la gestion des permissions dans une application Symfony en utilisant les Voters, plutôt que des conditions if/else dans les contrôleurs. Les Voters permettent de centraliser et simplifier la logique de sécurité, en déléguant les vérifications d'accès à des classes spécialisées. L'auteur illustre cela avec un exemple concret de gestion des droits d'édition et de visualisation des posts dans un blog. Il montre comment créer et utiliser un Voter pour nettoyer et sécuriser le code des contrôleurs.
Ce partage explique l'importance de CORS (Cross-Origin Resource Sharing) pour sécuriser les sessions utilisateur sur les APIs web. Il décrit comment CORS agit comme un garde-fou en contrôlant l'accès aux ressources entre différents domaines, empêchant ainsi le vol de données via des requêtes cross-origin. L'article détaille les mécanismes de CORS, y compris les requêtes simples et les prévols (preflight), et fournit des exemples de configuration pour Symfony utilisant le NelmioCorsBundle, soulignant l'importance de la directive allow_credentials: true pour protéger les sessions utilisateur.
Jake Archibald explique les complexités de CORS (Cross-Origin Resource Sharing) dans un article détaillé, retraçant son historique et ses implications de sécurité. Il souligne que les requêtes croisées sans consentement, comme les images ou les scripts, ont causé de nombreux problèmes de sécurité, notamment avec les cookies et les données sensibles. Pour illustrer ses points, il a créé un outil interactif appelé "The CORS playground". L'article explore les raisons pour lesquelles CORS est conçu de manière complexe et comment il s'intègre dans les mécanismes de récupération des navigateurs.
L'article présente 5 scripts Bash dont on peut s'inspirer pour construire les nôtres.
- Création d'un backup
- Surveillance du CPU, de la mémoire et de l'espace disque disponible avec alerte en cas de besoin
- Audit de sécurité rapide
- Vérification rapide de la réponse des sites
- Partitionnement de disque dur
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Sans cet attribut, l'accès aux ressources de la page appelante par l'iframe est permis !
Dans cet article, l'auteur détaille et donnes des solutions aux 10 plus grosses failles identifiées par l'OWASP (the Open Web Application Security Project).