Maison > développement back-end > Tutoriel Python > Quand dois-je utiliser « shell=True » avec le module « subprocess » ?

Quand dois-je utiliser « shell=True » avec le module « subprocess » ?

Susan Sarandon
Libérer: 2024-12-20 19:22:10
original
1045 Les gens l'ont consulté

When Should I Use `shell=True` with the `subprocess` Module?

Utilisation spécifique de 'shell=True' dans le sous-processus

Lors de l'utilisation du module de sous-processus, l'argument 'shell=True' sert un objectif spécifique but. Bien que les deux extraits de code suivants exécutent le même processus, leur approche diffère :

callProcess = subprocess.Popen(['ls', '-l'], shell=True)
callProcess = subprocess.Popen(['ls', '-l']) # without shell
Copier après la connexion

Quand utiliser 'shell=True'

Invoquer 'shell= True' implique que la commande sera exécutée via un interpréteur shell, permettant l'expansion des variables d'environnement et des fichiers globs. Cependant, cette approche comporte des risques potentiels :

  • Invocation d'un programme inconnu : La variable d'environnement SHELL dicte quel binaire est invoqué en tant que shell, introduisant un comportement spécifique à la plate-forme.

Approche privilégiée

Généralement, il est conseillé d'éviter d'utiliser 'shell=Vrai'. Voici quelques raisons :

  • Vulnérabilités de sécurité : Les attaques ILS (input line splitting) peuvent exploiter les invocations basées sur le shell en manipulant les variables d'environnement.
  • Dépendance de la plate-forme : Le comportement du shell varie selon les plates-formes, ce qui rend difficile la garantie d'une cohérence résultats.

Résumé

Sauf si vous avez un besoin spécifique d'expansion du shell, il est recommandé de définir 'shell=False' pour les invocations de sous-processus. Cela garantit que le processus est exécuté directement sans recourir à un interprète ni introduire de risques inutiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal