Comment échapper en toute sécurité aux caractères pour les appels os.system() ?

Linda Hamilton
Libérer: 2024-10-28 20:39:02
original
479 Les gens l'ont consulté

How to Safely Escape Characters for os.system() Calls?

Caractères d'échappement pour les appels os.system()

Lors de l'utilisation de os.system(), il est crucial de garantir un échappement correct des noms de fichiers et des arguments. . Voici une solution qui résout ce problème et prend en charge plusieurs systèmes d'exploitation et shells, principalement bash.

Utilisation de guillemets

L'approche la plus simple et la plus sécurisée consiste à entourer les commandes et arguments entre guillemets doubles ou simples :

os.system("my_command 'argument with spaces'")
Copier après la connexion

S'échapper à l'aide de shlex ou de pipes

Si les guillemets ne conviennent pas, les modules shlex ou pipes peuvent être utilisés pour échapper les caractères :

  • shlex.quote(string) : cette fonction échappe aux caractères spéciaux dans les chaînes, ce qui les rend sûrs à transmettre à bash.
  • pipes.quote(string) : similaire à shlex.quote(), mais pour les anciennes versions de Python (prend en charge Python 2 et 3).

Exemple d'utilisation

Supposons que vous souhaitiez exécuter la commande "cat input.txt | grep 'trouver quelque chose' | sort > output.txt" en utilisant os.system(). En utilisant shlex.quote(), le code serait :

import shlex

cmd = "cat {} | grep '{}' | sort > {}".format(
    shlex.quote("input.txt"),
    shlex.quote("find something"),
    shlex.quote("output.txt"),
)
os.system(cmd)
Copier après la connexion

Notes sur la sécurité

Alors que os.system() offre un moyen rapide et direct d'exécuter commandes système, il est important de prendre en compte les failles de sécurité potentielles. Assurez-vous que les entrées générées par l'utilisateur ou non fiables sont correctement validées et nettoyées avant d'utiliser os.system().

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!

source:php.cn
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