ホームページ  >  記事  >  バックエンド開発  >  Python で os.system() 呼び出しのファイル名と引数を安全にエスケープするにはどうすればよいですか?

Python で os.system() 呼び出しのファイル名と引数を安全にエスケープするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 21:10:02898ブラウズ

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

os.system() 呼び出しの引数のエスケープ

os.system() を利用してコマンドライン コマンドを実行する場合、次のように渡されるファイル名と引数をエスケープする必要があります。特に bash などのオペレーティング システムでは、パラメータが発生します。これを達成する効果的な方法は次のとおりです。

shlex.quote() を使用したエスケープ関数

Python 3 には、shlex.quote() という名前の便利なエスケープ関数が用意されています。この関数は、あらゆる文字列を、os.system() 呼び出しの引数として安全に利用できる適切にエスケープされたバージョンに効果的に変換します。

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

Python 2 および 3 のエスケープ関数

Python 2 との下位互換性が必要な場合は、shlex.quote() の代わりに Pipes.quote 関数を使用できます。ただし、パイプは Python 3.10 で非推奨となり、Python 3.13 で削除されることに注意してください。

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

セキュリティに関する追加の注意

while os.system()はコマンドを実行するための簡単な方法を提供しますが、セキュリティ上の懸念を認識しておくことが不可欠です。信頼できないソースからの入力を受け入れる場合は注意してください。

以上がPython で os.system() 呼び出しのファイル名と引数を安全にエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。