> 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

Recherche de fonctions de l’analyseur de sécurité PHP pour les fonctions PHP dangereuses, les motifs à risque, l’impact de l’exploitation, les notes de triage et les conseils de remédiation.

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

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

## Chercheur de fonctions

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Fonction / motif</th><th>Catégorie</th><th>Gravité</th><th>Impact</th><th>Vérification du scanner</th><th>Correctif</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 les 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 de requête, de cookie, de base de données, de fichier ou de ligne de commande atteint la commande.</td><td>Supprimez l’usage du shell ou isolez les commandes fixes derrière des listes blanches.</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 sûrs à des bibliothèques.</td></tr><tr><td><code>passthru()</code></td><td>Exécution de commandes</td><td>Critique</td><td>RCE avec sortie brute</td><td>Escalade lorsque c’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 les 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 PHP de flux/fichiers 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>Escalade dans les contextes CLI, cron, SUID, sudo et worker.</td><td>Supprimez les chemins d’exécution de l’interpréteur privilégié.</td></tr><tr><td><code>`backticks`</code></td><td>Exécution de commandes</td><td>Critique</td><td>Exécution de shell cachée</td><td>Détectez l’interpolation de variables dans les expressions entre backticks.</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 PHP arbitraire</td><td>Signalez toute utilisation ; escalade lorsque la chaîne évaluée est dynamique.</td><td>Utilisez des closures, des parseurs, 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é</td><td>Risque d’exécution de code hérité</td><td>Signalez les assertions de chaînes dans les anciens bases de code 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é</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é</td><td>Remplacement évalué hérité</td><td>Signalez l’évaluation des remplacements regex hérités.</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é</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>Mappez les choix utilisateur vers 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 de bord de l’autoload.</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 de code applicatif</td><td>Escalade lorsque le chemin contient des données de requête.</td><td>رفضیز? no - let's translate properly</td></tr><tr><td><code>require_once</code></td><td>Inclusion de fichiers</td><td>Critique</td><td>Exécution de code applicatif</td><td>Examinez les chargeurs de framework, les chargeurs de plugins et les chemins de templates.</td><td>Utilisez uniquement des modules autorisés par liste blanche.</td></tr><tr><td><code>file_get_contents()</code></td><td>Lecture de fichier / réseau</td><td>Élevé</td><td>LFI, SSRF, divulgation de secrets</td><td>Signalez les chemins, URL et <code>php://input</code> analyses</td><td>Canonicalisez les chemins et bloquez les schémas à risque.</td></tr><tr><td><code>readfile()</code></td><td>Lecture de fichier</td><td>Élevé</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 à partir de répertoires approuvés.</td></tr><tr><td><code>fopen()</code></td><td>Accès fichier / réseau</td><td>Élevé</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é</td><td>Divulgation de fichier basée sur les lignes</td><td>Signalez les noms de fichier contrôlés par l’utilisateur.</td><td>Utilisez des chemins de stockage fixes et des vérifications de limites.</td></tr><tr><td><code>SplFileObject</code></td><td>Accès aux fichiers</td><td>Élevé</td><td>LFI, traversée de chemin</td><td>Détectez les arguments dynamiques du constructeur.</td><td>Appliquer <code>realpath()</code> l’application des limites.</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>Escalade lorsque le nom de fichier et le contenu sont contaminés ou que le chemin est public.</td><td>Générez les noms de fichier et écrivez en dehors de la racine web.</td></tr><tr><td><code>fwrite()</code></td><td>Écriture de fichier</td><td>Élevé</td><td>Modification arbitraire de fichier</td><td>Suivez l’origine du handle depuis <code>fopen()</code>.</td><td>Restreignez 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é</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 à l’abri des collisions.</td></tr><tr><td><code>rename()</code></td><td>Déplacement de fichier</td><td>Élevé</td><td>Contournement d’upload, é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é</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>Permissions</td><td>Élevé</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 de moindre privilège et des chemins fixes.</td></tr><tr><td><code>chown()</code> / <code>chgrp()</code></td><td>Propriété</td><td>Élevé</td><td>Manipulation des 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>Moyen</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>Moyen</td><td>Création de fichier, abus des horodatages</td><td>Escalade dans cron ou les répertoires privilégiés.</td><td>Utilisez des chemins fixes et des vérifications 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 toute utilisation avec des données de requête, cookie, upload, 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é</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 uploads.</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é</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é</td><td>Gadget d’injection d’objet</td><td>Escalade s’il 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>Moyen</td><td>Exécution implicite d’un gadget</td><td>Vérifiez le rendu des templates 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é</td><td>SSRF, accès à des services internes</td><td>Suivez les options d’URL, de redirections, d’en-têtes, de proxy et de protocole.</td><td>Autorisez par liste blanche les hôtes et bloquez les plages privées.</td></tr><tr><td><code>fsockopen()</code></td><td>Réseau</td><td>Élevé</td><td>Accès brut au réseau interne</td><td>Signalez les valeurs dynamiques de l’hôte et du port.</td><td>Restreignez les destinations et les flux sortants.</td></tr><tr><td><code>pfsockopen()</code></td><td>Réseau</td><td>Élevé</td><td>Accès persistant au réseau interne</td><td>Examinez les connexions de service de longue durée.</td><td>Utilisez des points de terminaison fixes.</td></tr><tr><td><code>stream_socket_client()</code></td><td>Réseau</td><td>Élevé</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>Moyen</td><td>Requêtes de type SSRF</td><td>Examinez les valeurs dynamiques de WSDL et de point de terminaison.</td><td>Utilisez des WSDL fixes et bloquez les redirections.</td></tr><tr><td><code>mysqli_query()</code></td><td>SQL</td><td>Élevé</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>SQL</td><td>Élevé</td><td>Injection SQL empilée</td><td>Escalade des requêtes multi-instructions dynamiques.</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>SQL</td><td>Élevé</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>SQL</td><td>Élevé</td><td>Injection SQL ou SQL destructeur</td><td>Examinez les actions d’administration et les migrations.</td><td>Utilisez des requêtes paramétrées.</td></tr><tr><td><code>call_user_func()</code></td><td>Dispatch dynamique</td><td>Élevé</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é</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é</td><td>Dispatch de fonction arbitraire</td><td>Signalez les noms de fonctions provenant de la requête ou des données de la base.</td><td>Mappez les noms vers des fonctions fixes.</td></tr><tr><td><code>$object->$method()</code></td><td>Méthode dynamique</td><td>Élevé</td><td>Abus du 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>Moyen</td><td>Invocation dynamique</td><td>Examinez les noms réfléchis et l’invocation.</td><td>Restreignez la réflexion aux outils internes.</td></tr><tr><td><code>register_shutdown_function()</code></td><td>Callback différé</td><td>Moyen</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é</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’utilisation 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 d’upload</td><td>Moyen</td><td>Validation de contenu faible</td><td>Signalez lorsqu’elle est utilisée comme seule validation d’upload.</td><td>Combinez les contrôles d’extension, MIME, contenu et stockage.</td></tr><tr><td><code>ZipArchive::extractTo()</code></td><td>Extraction d’archive</td><td>Élevé</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>Moyen</td><td>Fuite de configuration, chemin, module et environnement</td><td>Signalez-le s’il est accessible en dehors du développement local.</td><td>Supprimez-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>Escalade lorsqu’il est utilisé dans des réponses ou des 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>Moyen</td><td>Divulgation de chemin et d’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>

## Chercheur 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é</td><td>Les fonctions d’exécution dangereuses restent disponibles.</td><td>Signalez l’absence ou l’incomplétude du durcissement, surtout lorsque des puits de commandes existent.</td></tr><tr><td><code>open_basedir</code></td><td>Moyen</td><td>PHP peut accéder à des chemins de système de fichiers plus larges.</td><td>Signalez les valeurs absentes, vides ou trop larges.</td></tr><tr><td><code>allow_url_fopen</code></td><td>Moyen</td><td>Les API de fichiers peuvent récupérer des URL.</td><td>Escalade pour les lectures de fichiers basées sur des URL et les fonctions sujettes au 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>Moyen</td><td>Les traces de pile, chemins et secrets peuvent fuiter.</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 de PHP.</td><td>Recommandez la désactivation en production.</td></tr><tr><td><code>file_uploads</code></td><td>Info</td><td>Une surface d’attaque pour les uploads existe.</td><td>Associez-la à des vérifications du chemin d’upload, de la taille, de l’extension et du contenu.</td></tr><tr><td><code>upload_max_filesize</code></td><td>Moyen</td><td>Uploads volumineux 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>Moyen</td><td>Le vol du cookie de session via un script côté client est plus facile.</td><td>Recommandé activé.</td></tr><tr><td><code>session.cookie_secure</code></td><td>Moyen</td><td>Les cookies peuvent être envoyés via HTTP.</td><td>Recommandé activé sur les sites HTTPS.</td></tr><tr><td><code>session.cookie_samesite</code></td><td>Faible</td><td>L’exposition au CSRF peut augmenter.</td><td>Recommandé explicite <code>Souple</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 originaux, chemins temporaires                         |
| En-têtes           | `$_SERVER['HTTP_*']`, `getallheaders()`                                            |
| Corps brut         | `php://input`, JSON/XML décodés                                                    |
| 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                       |

## ID de règles

| ID de règle        | Gravité  | Signification                                                                                    |
| ------------------ | -------- | ------------------------------------------------------------------------------------------------ |
| `PHP-CMD-001`      | Critique | Une entrée non fiable atteint l'exécution de commandes.                                          |
| `PHP-EVAL-001`     | Critique | Une entrée non fiable atteint l'évaluation de code PHP.                                          |
| `PHP-INCL-001`     | Critique | Une entrée non fiable contrôle les chemins include/require.                                      |
| `PHP-DESER-001`    | Critique | Une entrée non fiable 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é    | La validation ou le stockage des téléversements peut autoriser des fichiers exécutables.         |
| `PHP-SSRF-001`     | Élevé    | Une URL non fiable atteint des puits HTTP, de flux, de socket ou cURL.                           |
| `PHP-SQL-001`      | Élevé    | Une entrée non fiable atteint du SQL brut.                                                       |
| `PHP-PATH-001`     | Élevé    | Un chemin non fiable atteint la logique de lecture/écriture/suppression/déplacement de fichiers. |
| `PHP-CALLBACK-001` | Élevé    | Un nom de fonction ou de méthode non fiable atteint l'appel dynamique.                           |
| `PHP-CONFIG-001`   | Élevé    | Une configuration PHP dangereuse augmente l'exploitabilité.                                      |
| `PHP-PRIV-001`     | Critique | L'exécution PHP a un contexte SUID, sudo, cron ou privilégié.                                    |

## Triage rapide

| Question                                                                                                         | Renforcement de la gravité          |
| ---------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
| Des données de requête peuvent-elles atteindre la fonction ?                                                     | Passer à Élevée ou Critique.        |
| La fonction exécute-t-elle des commandes, du code PHP, des inclusions ou de la désérialisation ?                 | Critique.                           |
| Accède-t-il à des fichiers sous la racine web ?                                                                  | Élevée ou Critique.                 |
| Accepte-t-il des URL, des wrappers, des hôtes ou des ports ?                                                     | Élevée.                             |
| S'exécute-t-il 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 ? | Augmenter d'un niveau.              |
| La valeur est-elle sélectionnée dans une liste d'autorisation stricte ?                                          | Réduire la confiance ou la gravité. |

## Indicateurs d'escalade de privilèges

| Signal                                                             | 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'autre utilisateur.                          |
| Un cron appartenant à root exécute un PHP inscriptible             | Un script inscriptible peut devenir une exécution privilégiée.                         |
| Racine web inscriptible                                            | Un bogue 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": "critique",
  "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 de commandes système 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`, les routes du framework, les contrôleurs, les tâches et les scripts CLI.
* Suivre les entrées provenant des requêtes, des cookies, des téléversements, des en-têtes, du corps brut, de la CLI, de l'environnement, de la base de données, du cache, des files d'attente et des fichiers.
* Détecter les puits d'exécution de commandes, d'exécution de code, d'inclusion, de fichiers, de réseau, de SQL, de désérialisation, de téléversement, de callback, de débogage et de configuration.
* Attribuer un score aux constatations selon l'atteignabilité, la sanitisation, la version de PHP, la configuration, la racine web, les permissions et le contexte d'exécution.
* Exporter 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
