Maison >développement back-end >Tutoriel Python >Comment puis-je échapper en toute sécurité aux noms de fichiers et aux arguments dans les appels os.system() en Python ?

Comment puis-je échapper en toute sécurité aux noms de fichiers et aux arguments dans les appels os.system() en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 22:18:02870parcourir

How can I safely escape filenames and arguments in os.system() calls in Python?

Échapper aux appels os.system()

Pour échapper aux noms de fichiers et aux arguments dans les appels os.system(), en gérant efficacement les caractères spéciaux dans différents systèmes d'exploitation et shells, il est recommandé d'utiliser les fonctions de la bibliothèque.

shlex.quote() et pipes.quote()

Les utilisateurs de Python 3 peuvent exploiter shlex.quote( ), tandis que ceux qui utilisent à la fois Python 2 et Python 3 peuvent utiliser pipes.quote(). Ces fonctions constituent des options efficaces et robustes pour échapper des chaînes, vous permettant de les transmettre facilement en tant que paramètres aux commandes.

Utilisation de shlex.quote() pour Python 3 :

<code class="python">import shlex

escaped_filename = shlex.quote(filename)
os.system("cat %s" % escaped_filename)</code>

Utilisation de pipes.quote() pour Python 2 et Python 3 :

<code class="python">import pipes

escaped_filename = pipes.quote(filename)
os.system("cat %s" % escaped_filename)</code>

Considérations sur la simplicité et la sécurité :

Pendant que l'utilisation de guillemets reste une solution viable, il est essentiel d'être attentif aux éventuels problèmes de sécurité. Lors de l'utilisation de os.system(), il est crucial de s'assurer que la source des chaînes d'entrée est digne de confiance et n'est pas susceptible d'être exploitée de manière malveillante.

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:
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