> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/fr/hacking-tools/web/php-security-scanner.md).

# Analyseur de sécurité PHP

PHP Security Scanner est un outil d’examen statique réservé aux abonnés pour détecter les fonctions PHP dangereuses, les configurations faibles, les chemins risqués de la source au puits, et les indicateurs d’escalade de privilèges dans les applications PHP.

Utilisez le détecteur de fonctions comme vue principale de triage : recherchez par nom de fonction, catégorie, impact ou gravité.

## Détecteur de fonctions

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Fonction / Modèle</th><th>Catégorie</th><th>Gravité</th><th>Impact</th><th>Vérification du scanner</th><th>Correction</th></tr></thead><tbody><tr><td><code>system()</code></td><td>Exécution de commandes</td><td>Critique</td><td>RCE en tant qu’utilisateur web</td><td>Signalez les chaînes de commande contaminées, l’interpolation, la concaténation et les arguments contrôlés par l’utilisateur.</td><td>Utilisez des API PHP natives ou des commandes et arguments strictement autorisés par liste blanche.</td></tr><tr><td><code>exec()</code></td><td>Exécution de commandes</td><td>Critique</td><td>RCE, capture de la sortie de commande</td><td>Vérifiez si une entrée provenant d’une requête, d’un cookie, de la base de données, d’un fichier ou du CLI atteint la commande.</td><td>Supprimez l’usage du shell ou isolez les commandes fixes derrière des listes autorisées.</td></tr><tr><td><code>shell_exec()</code></td><td>Exécution de commandes</td><td>Critique</td><td>RCE avec sortie renvoyée</td><td>Détectez la construction dynamique de commandes et la sortie rendue dans les réponses.</td><td>Remplacez par des appels à des bibliothèques sûres.</td></tr><tr><td><code>passthru()</code></td><td>Exécution de commandes</td><td>Critique</td><td>RCE avec sortie brute</td><td>Faites remonter le risque lorsqu’il est accessible depuis des routes web ou du traitement de fichiers.</td><td>Évitez les appels au shell ; validez des ensembles d’entrées fixes.</td></tr><tr><td><code>proc_open()</code></td><td>Contrôle de processus</td><td>Critique</td><td>RCE, interaction avec le processus</td><td>Examinez la commande, la spécification des descripteurs, l’environnement et le répertoire de travail.</td><td>Utilisez des workers contraints et des modèles de commande fixes.</td></tr><tr><td><code>popen()</code></td><td>Contrôle de processus</td><td>Critique</td><td>RCE via un flux de processus</td><td>Signalez les chaînes de commande contaminées et les lectures de flux.</td><td>Remplacez par les API de flux/fichiers PHP lorsque c’est possible.</td></tr><tr><td><code>pcntl_exec()</code></td><td>Contrôle de processus</td><td>Critique</td><td>Remplacement de processus, risque d’escalade de privilèges</td><td>Faites remonter dans les contextes CLI, cron, SUID, sudo et workers.</td><td>Supprimez les chemins d’exécution de l’interpréteur avec privilèges.</td></tr><tr><td><code>`backticks`</code></td><td>Exécution de commandes</td><td>Critique</td><td>Exécution de shell masquée</td><td>Détectez l’interpolation de variables à l’intérieur des expressions entre accents graves.</td><td>Remplacez par des API sûres explicites.</td></tr><tr><td><code>eval()</code></td><td>Exécution de code</td><td>Critique</td><td>Exécution arbitraire de PHP</td><td>Signalez tout usage ; faites remonter lorsque la chaîne évaluée est dynamique.</td><td>Utilisez des fermetures, des analyseurs, des cartes de dispatch fixes ou des modèles sûrs.</td></tr><tr><td><code>assert()</code></td><td>Exécution de code</td><td>Élevée</td><td>Risque d’exécution de code hérité</td><td>Signalez les assertions de chaînes dans les anciens codebases PHP.</td><td>Utilisez uniquement des assertions booléennes ; supprimez les chaînes dynamiques.</td></tr><tr><td><code>create_function()</code></td><td>Exécution de code</td><td>Élevée</td><td>Code évalué hérité</td><td>Détectez les anciens plugins et le code de compatibilité PHP 5/7.</td><td>Remplacez par des fonctions anonymes.</td></tr><tr><td><code>preg_replace()</code> par <code>/e</code></td><td>Exécution de code</td><td>Élevée</td><td>Remplacement évalué hérité</td><td>Signalez l’évaluation héritée des remplacements regex.</td><td>Utilisez <code>preg_replace_callback()</code>.</td></tr><tr><td><code>mb_ereg_replace()</code> par <code>e</code></td><td>Exécution de code</td><td>Élevée</td><td>Risque de remplacement évalué</td><td>Examinez les motifs dynamiques et les valeurs de remplacement.</td><td>Utilisez une logique sûre basée sur des callbacks sans évaluation.</td></tr><tr><td><code>include</code></td><td>Inclusion de fichiers</td><td>Critique</td><td>LFI/RFI vers exécution de code</td><td>Signalez les chemins, wrappers et astuces d’extension contrôlés par l’utilisateur.</td><td>Associez les choix de l’utilisateur à des fichiers fixes.</td></tr><tr><td><code>include_once</code></td><td>Inclusion de fichiers</td><td>Critique</td><td>LFI/RFI vers exécution de code</td><td>Vérifiez les chemins d’inclusion dynamiques et les effets secondaires de chargement automatique.</td><td>Utilisez des cartes d’inclusion fixes et des chemins canoniques.</td></tr><tr><td><code>require</code></td><td>Inclusion de fichiers</td><td>Critique</td><td>Exécution du code applicatif</td><td>Faites remonter lorsque le chemin contient des données de requête.</td><td>رفضez les entrées dynamiques du système de fichiers.</td></tr><tr><td><code>require_once</code></td><td>Inclusion de fichiers</td><td>Critique</td><td>Exécution du code applicatif</td><td>Examinez les chargeurs de frameworks, les chargeurs de plugins et les chemins de modèles.</td><td>Utilisez uniquement des modules autorisés par liste blanche.</td></tr><tr><td><code>file_get_contents()</code></td><td>Lecture de fichiers / réseau</td><td>Élevée</td><td>LFI, SSRF, divulgation de secrets</td><td>Signalez les chemins, URL, et <code>php://input</code> l’analyse contrôlés par l’utilisateur.</td><td>Canonicalisez les chemins et bloquez les schémas risqués.</td></tr><tr><td><code>readfile()</code></td><td>Lecture de fichier</td><td>Élevée</td><td>Divulgation directe de fichier</td><td>Détectez la traversée de chemin et les gestionnaires de téléchargement publics.</td><td>Servez les fichiers par ID depuis des répertoires approuvés.</td></tr><tr><td><code>fopen()</code></td><td>Accès aux fichiers / au réseau</td><td>Élevée</td><td>LFI, SSRF, écriture arbitraire</td><td>Suivez le mode, la source du chemin et les wrappers d’URL.</td><td>Validez le schéma, le mode et le chemin canonique.</td></tr><tr><td><code>file()</code></td><td>Lecture de fichier</td><td>Élevée</td><td>Divulgation de fichier ligne par ligne</td><td>Signalez les noms de fichiers contrôlés par l’utilisateur.</td><td>Utilisez des chemins de stockage fixes et des contrôles de frontière.</td></tr><tr><td><code>SplFileObject</code></td><td>Accès aux fichiers</td><td>Élevée</td><td>LFI, traversée de chemin</td><td>Détectez les arguments dynamiques du constructeur.</td><td>Appliquez <code>realpath()</code> le contrôle de frontière.</td></tr><tr><td><code>file_put_contents()</code></td><td>Écriture de fichier</td><td>Critique</td><td>Web shell, écrasement, empoisonnement de configuration</td><td>Faites remonter lorsque le nom de fichier et le contenu sont contaminés ou que le chemin est public.</td><td>Générez des noms de fichiers et écrivez en dehors de la racine web.</td></tr><tr><td><code>fwrite()</code></td><td>Écriture de fichier</td><td>Élevée</td><td>Modification arbitraire de fichier</td><td>Suivez l’origine du handle depuis <code>fopen()</code>.</td><td>Limitez les répertoires inscriptibles et les types de fichiers.</td></tr><tr><td><code>copy()</code></td><td>Écriture / déplacement de fichier</td><td>Élevée</td><td>Plantation ou écrasement de fichier</td><td>Vérifiez la contamination de la source et de la destination.</td><td>Utilisez des destinations fixes et des noms résistants aux collisions.</td></tr><tr><td><code>rename()</code></td><td>Déplacement de fichier</td><td>Élevée</td><td>Contournement de téléversement, écrasement</td><td>Signalez les chemins de destination contrôlés par l’utilisateur.</td><td>Utilisez des noms de stockage générés.</td></tr><tr><td><code>unlink()</code></td><td>Suppression de fichier</td><td>Élevée</td><td>Suppression arbitraire de fichier</td><td>Détectez les chemins contaminés et la traversée.</td><td>Supprimez par ID d’objet, pas par chemin brut.</td></tr><tr><td><code>chmod()</code></td><td>Autorisations</td><td>Élevée</td><td>Affaiblissement des privilèges</td><td>Signalez les modes larges comme <code>0777</code> et les chemins contaminés.</td><td>Utilisez des modes à privilèges minimaux et des chemins fixes.</td></tr><tr><td><code>chown()</code> / <code>chgrp()</code></td><td>Propriété</td><td>Élevée</td><td>Manipulation de privilèges</td><td>Examinez les scripts de déploiement et d’administration.</td><td>N’exposez pas les changements de propriété aux entrées de l’application.</td></tr><tr><td><code>mkdir()</code></td><td>Système de fichiers</td><td>Moyenne</td><td>Traversée de chemin, permissions faibles</td><td>Signalez les chemins dynamiques et les modes permissifs.</td><td>Normalisez les chemins et définissez des permissions strictes.</td></tr><tr><td><code>touch()</code></td><td>Système de fichiers</td><td>Moyenne</td><td>Création de fichier, abus de timestamp</td><td>Faites remonter dans des répertoires cron ou privilégiés.</td><td>Utilisez des chemins fixes et des contrôles de propriété.</td></tr><tr><td><code>unserialize()</code></td><td>Désérialisation</td><td>Critique</td><td>Injection d’objet PHP</td><td>Signalez tout usage avec des données de requête, cookie, téléversement, base de données, cache ou file d’attente.</td><td>Utilisez JSON ou restreignez <code>allowed_classes</code>.</td></tr><tr><td><code>Phar</code> / <code>phar://</code></td><td>Désérialisation</td><td>Élevée</td><td>Injection d’objet déclenchée par les métadonnées</td><td>Signalez les <code>phar://</code> chemins acceptés et les fonctions de fichier touchant les téléversements.</td><td>Bloquez les wrappers et évitez les chemins de métadonnées contenant des objets.</td></tr><tr><td><code>__wakeup()</code></td><td>Méthode magique</td><td>Élevée</td><td>Gadget d’injection d’objet</td><td>Examinez les actions sur les fichiers, SQL, commandes et réseau.</td><td>Gardez les méthodes magiques sans effet de bord.</td></tr><tr><td><code>__destruct()</code></td><td>Méthode magique</td><td>Élevée</td><td>Gadget d’injection d’objet</td><td>Faites remonter si elle supprime, écrit, inclut ou exécute.</td><td>Évitez les effets de bord dangereux des destructeurs.</td></tr><tr><td><code>__toString()</code></td><td>Méthode magique</td><td>Moyenne</td><td>Exécution implicite de gadget</td><td>Vérifiez le rendu des modèles et les chemins de journalisation.</td><td>Gardez les méthodes de conversion pures.</td></tr><tr><td><code>curl_exec()</code></td><td>Réseau / SSRF</td><td>Élevée</td><td>SSRF, accès aux services internes</td><td>Suivez les options d’URL, de redirections, d’en-têtes, de proxy et de protocole.</td><td>Autorisez les hôtes par liste blanche et bloquez les plages privées.</td></tr><tr><td><code>fsockopen()</code></td><td>Réseau</td><td>Élevée</td><td>Accès brut au réseau interne</td><td>Signalez les valeurs dynamiques d’hôte et de port.</td><td>Restreignez les destinations et le trafic sortant.</td></tr><tr><td><code>pfsockopen()</code></td><td>Réseau</td><td>Élevée</td><td>Accès persistant au réseau interne</td><td>Examinez les connexions de service à longue durée de vie.</td><td>Utilisez des points de terminaison fixes.</td></tr><tr><td><code>stream_socket_client()</code></td><td>Réseau</td><td>Élevée</td><td>SSRF et abus de protocole</td><td>Signalez les schémas, hôtes et ports dynamiques.</td><td>Utilisez des cibles réseau autorisées par liste blanche.</td></tr><tr><td><code>SoapClient</code></td><td>Réseau</td><td>Moyenne</td><td>Requêtes de type SSRF</td><td>Examinez les valeurs dynamiques du WSDL et du point de terminaison.</td><td>Utilisez des WSDL fixes et bloquez les redirections.</td></tr><tr><td><code>mysqli_query()</code></td><td>erreurs SQL</td><td>Élevée</td><td>Injection SQL</td><td>Signalez le SQL concaténé ou interpolé.</td><td>Utilisez des requêtes préparées.</td></tr><tr><td><code>mysqli_multi_query()</code></td><td>erreurs SQL</td><td>Élevée</td><td>Injection SQL empilée</td><td>Faites remonter les requêtes dynamiques à plusieurs instructions.</td><td>Évitez les API multi-requêtes pour les données influencées par l’utilisateur.</td></tr><tr><td><code>PDO::query()</code></td><td>erreurs SQL</td><td>Élevée</td><td>Injection SQL</td><td>Signalez les chaînes de requête brutes contenant des variables.</td><td>Utilisez <code>prepare()</code> et des paramètres liés.</td></tr><tr><td><code>PDO::exec()</code></td><td>erreurs SQL</td><td>Élevée</td><td>Injection SQL ou SQL destructif</td><td>Examinez les actions d’administration et les migrations.</td><td>Utilisez des instructions paramétrées.</td></tr><tr><td><code>call_user_func()</code></td><td>Dispatch dynamique</td><td>Élevée</td><td>Abus de callback</td><td>Signalez les noms de callback contaminés.</td><td>Utilisez des cartes de dispatch fixes.</td></tr><tr><td><code>call_user_func_array()</code></td><td>Dispatch dynamique</td><td>Élevée</td><td>Abus de callback avec arguments dynamiques</td><td>Suivez les sources du callback et des arguments.</td><td>Utilisez des gestionnaires explicites et des entrées typées.</td></tr><tr><td><code>$fn()</code></td><td>Fonction variable</td><td>Élevée</td><td>Dispatch arbitraire de fonction</td><td>Signalez les noms de fonction provenant d’une requête ou de données de base de données.</td><td>Associez les noms à des fonctions fixes.</td></tr><tr><td><code>$object->$method()</code></td><td>Méthode dynamique</td><td>Élevée</td><td>Abus de dispatch de méthode</td><td>Signalez les noms de méthode provenant des entrées.</td><td>Utilisez des cartes de méthodes autorisées par liste blanche.</td></tr><tr><td><code>ReflectionFunction</code></td><td>Réflexion</td><td>Moyenne</td><td>Invocation dynamique</td><td>Examinez les noms réfléchis et l’invocation.</td><td>Limitez la réflexion aux outils internes.</td></tr><tr><td><code>register_shutdown_function()</code></td><td>Callback différé</td><td>Moyenne</td><td>Chemin d’exécution caché</td><td>Signalez les callbacks et arguments dynamiques.</td><td>Utilisez des callbacks fixes explicites.</td></tr><tr><td><code>move_uploaded_file()</code></td><td>Téléverser</td><td>Élevée</td><td>Web shell, écrasement, traversée de chemin</td><td>Vérifiez le chemin de destination, la logique d’extension, le stockage public et l’usage du nom de fichier original.</td><td>Renommez les fichiers, autorisez les extensions par liste blanche, stockez en dehors de la racine web.</td></tr><tr><td><code>getimagesize()</code></td><td>Validation du téléversement</td><td>Moyenne</td><td>Validation du contenu faible</td><td>Signalez lorsque c’est utilisé comme seule validation du téléversement.</td><td>Combinez les contrôles d’extension, de MIME, de contenu et de stockage.</td></tr><tr><td><code>ZipArchive::extractTo()</code></td><td>Extraction d’archive</td><td>Élevée</td><td>Zip slip, écriture arbitraire</td><td>Vérifiez les noms des entrées d’archive et le répertoire d’extraction.</td><td>Canonicalisez chaque chemin extrait.</td></tr><tr><td><code>phpinfo()</code></td><td>Divulgation d’informations</td><td>Moyenne</td><td>Fuite de configuration, de chemin, de module et d’environnement</td><td>Signalez si c’est accessible en dehors du développement local.</td><td>Retirez-le de la production.</td></tr><tr><td><code>var_dump()</code> / <code>print_r()</code></td><td>Sortie de débogage</td><td>Faible</td><td>Fuite de données et de secrets</td><td>Faites remonter lorsqu’il est utilisé dans les réponses ou les chemins d’exception.</td><td>Utilisez des journaux structurés avec masquage.</td></tr><tr><td><code>debug_backtrace()</code></td><td>Sortie de débogage</td><td>Moyenne</td><td>Divulgation des chemins et des arguments</td><td>Examinez les gestionnaires d’erreurs et les routes de débogage.</td><td>Désactivez la sortie de débogage verbeuse en production.</td></tr></tbody></table>

## Détecteur de configuration

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Directive</th><th>Gravité</th><th>Risque</th><th>Vérification du scanner</th></tr></thead><tbody><tr><td><code>disable_functions</code></td><td>Élevée</td><td>Les fonctions d’exécution dangereuses restent disponibles.</td><td>Signalez les protections absentes ou incomplètes, surtout lorsque des puits de commandes existent.</td></tr><tr><td><code>open_basedir</code></td><td>Moyenne</td><td>PHP peut accéder à des chemins de système de fichiers plus larges.</td><td>Signalez les valeurs absentes, vides ou excessivement larges.</td></tr><tr><td><code>allow_url_fopen</code></td><td>Moyenne</td><td>Les API de fichiers peuvent récupérer des URL.</td><td>Faites remonter les lectures de fichiers basées sur des URL et les fonctions susceptibles de SSRF.</td></tr><tr><td><code>allow_url_include</code></td><td>Critique</td><td>Les inclusions dynamiques peuvent charger des ressources distantes.</td><td>Critique lorsqu’il est activé avec des chemins d’inclusion dynamiques.</td></tr><tr><td><code>display_errors</code></td><td>Moyenne</td><td>Les traces de pile, chemins et secrets peuvent fuir.</td><td>Signalez les configurations de production activées.</td></tr><tr><td><code>expose_php</code></td><td>Faible</td><td>Divulgation de la version PHP.</td><td>Recommandez de le désactiver en production.</td></tr><tr><td><code>file_uploads</code></td><td>Info</td><td>La surface d’attaque de téléversement existe.</td><td>Associez-la à des vérifications de chemin de téléversement, de taille, d’extension et de contenu.</td></tr><tr><td><code>upload_max_filesize</code></td><td>Moyenne</td><td>Téléversements excessifs et abus de stockage.</td><td>Signalez les valeurs supérieures à ce dont l’application a besoin.</td></tr><tr><td><code>session.cookie_httponly</code></td><td>Moyenne</td><td>Le vol du cookie de session via script côté client est plus facile.</td><td>Activation recommandée.</td></tr><tr><td><code>session.cookie_secure</code></td><td>Moyenne</td><td>Les cookies peuvent être envoyés en HTTP.</td><td>Activation recommandée sur les sites HTTPS.</td></tr><tr><td><code>session.cookie_samesite</code></td><td>Faible</td><td>L’exposition CSRF peut augmenter.</td><td>Recommandez une valeur explicite <code>Lax</code> ou <code>Strict</code>.</td></tr></tbody></table>

## Entrées source vers puits

| Source             | Exemples                                                                           |
| ------------------ | ---------------------------------------------------------------------------------- |
| Requête            | `$_GET`, `$_POST`, `$_REQUEST`                                                     |
| Cookies / sessions | `$_COOKIE`, valeurs de session                                                     |
| Téléversements     | `$_FILES`, noms de fichiers d'origine, chemins temporaires                         |
| En-têtes           | `$_SERVER['HTTP_*']`, `getallheaders()`                                            |
| Corps brut         | `php://input`, JSON/XML décodé                                                     |
| CLI / travailleurs | `$argv`, `STDIN`, variables d'environnement                                        |
| Données stockées   | Lignes de base de données, entrées de cache, files d'attente, colonnes sérialisées |
| Fichiers locaux    | Fichiers de configuration, imports CSV, fichiers temporaires                       |

## IDs des règles

| ID de règle        | Gravité  | Signification                                                                                  |
| ------------------ | -------- | ---------------------------------------------------------------------------------------------- |
| `PHP-CMD-001`      | Critique | Une entrée corrompue atteint l'exécution de commandes.                                         |
| `PHP-EVAL-001`     | Critique | Une entrée corrompue atteint l'évaluation de code PHP.                                         |
| `PHP-INCL-001`     | Critique | Une entrée corrompue contrôle les chemins d'include/require.                                   |
| `PHP-DESER-001`    | Critique | Une entrée corrompue atteint `unserialize()`.                                                  |
| `PHP-WRITE-001`    | Critique | Une écriture de fichier contrôlée par l'utilisateur atteint un chemin exécutable ou public.    |
| `PHP-UPLOAD-001`   | Élevée   | La validation ou le stockage des téléversements peut autoriser des fichiers exécutables.       |
| `PHP-SSRF-001`     | Élevée   | Une URL corrompue atteint des puits HTTP, flux, socket ou cURL.                                |
| `PHP-SQL-001`      | Élevée   | Une entrée corrompue atteint du SQL brut.                                                      |
| `PHP-PATH-001`     | Élevée   | Un chemin corrompu atteint la logique de lecture/écriture/suppression/déplacement de fichiers. |
| `PHP-CALLBACK-001` | Élevée   | Un nom de fonction ou de méthode corrompu atteint une distribution dynamique.                  |
| `PHP-CONFIG-001`   | Élevée   | Une configuration PHP dangereuse augmente l'exploitabilité.                                    |
| `PHP-PRIV-001`     | Critique | L'exécution PHP dispose d'un contexte SUID, sudo, cron ou privilégié.                          |

## Tri rapide

| Question                                                                                                         | Augmentation de la gravité           |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| Les données de la requête peuvent-elles atteindre la fonction ?                                                  | Passez à Élevé ou Critique.          |
| La fonction exécute-t-elle des commandes, du code PHP, des includes ou de la désérialisation ?                   | Critique.                            |
| Touche-t-elle des fichiers sous la racine web ?                                                                  | Élevé ou Critique.                   |
| Accepte-t-elle des URL, des wrappers, des hôtes ou des ports ?                                                   | Élevé.                               |
| S'exécute-t-elle via cron, sudo, SUID, des workers ou des hooks de déploiement ?                                 | Critique.                            |
| La validation repose-t-elle sur des listes de blocage, uniquement sur les extensions ou uniquement sur le MIME ? | Augmentez d'un niveau.               |
| La valeur est-elle sélectionnée à partir d'une liste d'autorisation stricte ?                                    | Réduisez la confiance ou la gravité. |

## Indices d'escalade de privilèges

| Indice                                                             | Risque                                                                               |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
| Binaire PHP SUID                                                   | PHP peut s'exécuter avec des privilèges élevés du propriétaire du fichier.           |
| Une règle sudo autorise PHP                                        | L'utilisateur peut exécuter PHP en tant qu'un autre utilisateur.                     |
| Un cron appartenant à root exécute du PHP inscriptible             | Un script modifiable peut devenir une exécution privilégiée.                         |
| Racine web inscriptible                                            | Un bug d'écriture de fichier ou de téléversement peut devenir une exécution de code. |
| Secrets lisibles par tous                                          | Les identifiants de l'application peuvent permettre un mouvement latéral.            |
| Les scripts Composer s'exécutent en tant qu'utilisateur privilégié | L'exécution de dépendances ou de scripts peut affecter le déploiement.               |

## Modèle de rapport

```json
{
  "id": "PHP-CMD-001",
  "severity": "critical",
  "function": "shell_exec",
  "file": "app/Controllers/ReportController.php",
  "line": 84,
  "source": "$_POST['format']",
  "impact": "Exécution de commandes à distance en tant qu'utilisateur du serveur web",
  "fix": "Remplacez l'exécution du shell par une bibliothèque PHP native ou des arguments strictement issus d'une liste d'autorisation."
}
```

## Liste de contrôle du scanner

* Analyser `.php`, `.inc`, `.phtml`, `.module`, `.theme`, routes du framework, contrôleurs, tâches et scripts CLI.
* Suivez les entrées issues des requêtes, cookies, téléversements, en-têtes, corps brut, CLI, environnement, base de données, cache, file d'attente et fichiers.
* Détectez les puits d'exécution de commandes, d'exécution de code, d'inclusion, de fichiers, de réseau, SQL, de désérialisation, de téléversement, de callback, de débogage et de configuration.
* Attribuez un score aux constatations en fonction de la portée, de la sanitisation, de la version de PHP, de la configuration, de la racine web, des permissions et du contexte d'exécution.
* Exportez le nom de la fonction, la catégorie, la gravité, la source, le puits, le fichier, la ligne, l'impact, la confiance et la correction.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/fr/hacking-tools/web/php-security-scanner.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
