Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Dateinamen und Argumente für os.system()-Aufrufe in Python sicher maskieren?

Wie kann ich Dateinamen und Argumente für os.system()-Aufrufe in Python sicher maskieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 21:10:02903Durchsuche

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

Escape-Argumente für os.system()-Aufrufe

Bei der Verwendung von os.system() zum Ausführen von Befehlszeilenbefehlen besteht die Notwendigkeit, Dateinamen und übergebene Argumente zu maskieren Parameter entstehen insbesondere in Betriebssystemen wie Bash. Hier ist eine effektive Methode, um dies zu erreichen:

Escape-Funktion mit shlex.quote()

Python 3 bietet eine praktische Escape-Funktion namens shlex.quote(). Diese Funktion wandelt jede Zeichenfolge effektiv in eine ordnungsgemäß maskierte Version um, die sicher als Argument in os.system()-Aufrufen verwendet werden kann.

<code class="python">import shlex
os.system(shlex.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>

Escape-Funktion für Python 2 und 3

Wenn Sie Abwärtskompatibilität mit Python 2 benötigen, können Sie die Funktion „pipes.quote“ anstelle von „shlex.quote()“ verwenden. Beachten Sie jedoch, dass Pipes in Python 3.10 veraltet sind und in Python 3.13 entfernt werden.

<code class="python">import pipes
os.system(pipes.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>

Zusätzlicher Hinweis zur Sicherheit

Während os.system() Da es eine unkomplizierte Methode zum Ausführen von Befehlen bietet, ist es wichtig, sich der Sicherheitsbedenken bewusst zu sein. Seien Sie vorsichtig, wenn Sie Eingaben von nicht vertrauenswürdigen Quellen annehmen.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateinamen und Argumente für os.system()-Aufrufe in Python sicher maskieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn