(PHP 4, PHP 5, PHP 7, PHP 8)
escapeshellcmd — Protège les caractères spéciaux du Shell
Description
escapeshellcmd(string
$command
): string
Les caractères suivants seront échappés :
&#;`|*?~<>^()[]{}$\
, \x0A
et \xFF
. '
et "
sont échappés que s'ils ne sont pas par paire. Sous Windows, tous ces caractères
ainsi que %
et !
sont précédés d'un
accent circonflexe (^
).
Liste de paramètres
-
command
-
La commande à échapper.
Valeurs de retour
La chaîne échappée.
Exemples
Exemple #1 Exemple avec escapeshellcmd()
<?php
// Nous autorisons un nombre arbitraire d'arguments de façon intentionnelle ici.
$command = './configure '.$_POST['configure_options'];
$escaped_command = escapeshellcmd($command);
system($escaped_command);
?>
Avertissement
La fonction escapeshellcmd() doit être utilisée
sur toute la chaîne de commande, et elle autorise
les personnes mal intentionnées de passer un nombre
d'arguments arbitraire. Pour échapper un seul argument,
la fonction escapeshellarg() devrait être
utilisée à la place.
Avertissement
Les espaces ne sont pas échappés par escapeshellcmd()
ce qui peut être problématique sur Windows avec des chemins tel que :
C:\Program Files\ProgramName\program.exe
.
Ceci peut être mitigé en utilisant le snippet de code suivant :
<?php
$cmd = preg_replace('`(?<!^) `', '^ ', escapeshellcmd($cmd));
Voir aussi
- escapeshellarg() - Protège une chaîne de caractères pour utilisation en ligne de commande
- exec() - Exécute un programme externe
- popen() - Crée un processus de pointeur de fichier
- system() - Exécute un programme externe et affiche le résultat
- les guillemets obliques