Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

PHPStan Security

devsecops

Définition

PHPStan Security est l'application du framework d'analyse statique PHPStan à la détection de vulnérabilités de sécurité dans le code PHP, via des extensions spécialisées comme phpstan-security-checker, phpstan-taint-analysis, et des règles de sécurité custom. PHPStan est l'analyseur statique PHP le plus populaire (alternative à Psalm), capable de détecter des erreurs de type et des problèmes de logique en simulant l'exécution du code PHP sans l'exécuter réellement. L'extension de PHPStan pour la sécurité la plus significative est le Taint Analysis (analyse de contamination) : implémentée dans le projet phpstan-taint-analysis ou dans la version Psalm équivalente, cette analyse suit le flux des données depuis les sources non fiables (entrées utilisateur : $_GET, $_POST, $_COOKIE, $_SERVER, données de base de données) jusqu'aux sinks dangereux (fonctions d'exécution : eval(), system(), exec(), fonctions de sortie HTML : echo, print, fonctions de requête SQL : mysqli_query(), PDO::query() sans paramètres préparés). Quand un chemin de contamination est trouvé entre une source et un sink sans validation intermédiaire, une alerte de sécurité est générée. La communauté PHP a développé plusieurs packages d'extension PHPStan orientés sécurité. phpstan-security-checker (roave/security-advisories) vérifie que les dépendances Composer du projet ne contiennent pas de vulnérabilités connues — une forme de SCA intégrée dans PHPStan. Des règles custom PHPStan peuvent détecter l'utilisation de fonctions PHP dépréciées ou dangereuses (md5() pour du hashing de mots de passe, serialize() sur des données utilisateur, extract() sur des tableaux non validés). PHPStan est particulièrement pertinent pour les applications WordPress, Symfony, et Laravel — les trois stacks PHP les plus répandues — qui ont chacune des patterns de vulnérabilités spécifiques détectables via des règles PHPStan adaptées à ces frameworks.

Taint Analysis PHPStan : sources et sinks

La Taint Analysis en PHP trace le flux des données non fiables depuis les sources (superglobales PHP : $_GET['id'], $_POST['name'], $_COOKIE['session'], $_SERVER['HTTP_HOST'], données lues depuis la DB sans validation préalable) jusqu'aux sinks dangereux (echo $var directement = XSS potentiel, mysqli_query("SELECT * FROM users WHERE id='$id'") = injection SQL, eval($var) = code injection, include($_GET['page']) = LFI). Toute donnée atteignant un sink sans passer par une fonction de validation/sanitization (htmlspecialchars(), intval(), prepared statement) génère une alerte de contamination.

Intégration PHPStan dans Symfony et Laravel

Des packages PHPStan dédiés aux frameworks : phpstan-symfony (détecte les misconfigurations de services Symfony, les injections dans les DQL/DBC Doctrine) et larastan/larastan (PHPStan configuré pour Laravel — comprend les magic methods, Eloquent, les facades Laravel). Ces packages réduisent les faux positifs liés aux patterns de framework non compris par PHPStan de base. La configuration composer.json inclut ces packages en require-dev, et le fichier phpstan.neon configure les niveaux d'analyse (level: max pour la sécurité) et les chemins analysés.

PHPStan dans les pipelines CI PHP

Intégration CI pour les projets PHP : composer require --dev phpstan/phpstan && vendor/bin/phpstan analyse --level=8 src/ (niveau 8 ou 9 pour la rigueur de sécurité maximale), avec génération de rapport JSON (--error-format=json > phpstan-results.json). La commande échoue (exit code non nul) si des erreurs sont trouvées, bloquant le pipeline. Pour les projets legacy avec beaucoup d'erreurs PHPStan existantes, l'option --generate-baseline crée une baseline des erreurs connues à ignorer, permettant d'introduire PHPStan progressivement (seules les nouvelles erreurs bloquent).

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis