1

サブプロセスに渡されるパラメーターは、コード インジェクションから何らかの方法で安全ですか?

映画ファイルのタグ付けを行う小さなpythonプログラムを構築しています。簡単にするために、subprocess.call() を使用して、タグ情報を (Windows の) AtomicParsley に渡しています。タグ情報はオンライン ソースであり、自動的に取得されます。一部の個人がタグにコードを配置した場合 (つまり、アクターを何らかの rd タームに置き換えた場合)、サブプロセスはその実行から安全でしょうか? これは、言語の詳細に関する質問というよりも、概念的な質問です。

subprocess.call は ['AtomicParsley',filename,'--tag1',tag1_info,(...)] で実行されます。コマンドの最初の部分は AP 実行可能ファイルの名前であることが保証され、2 番目の部分は有効なファイル名であることが保証されているため、metainfo データベース内の悪意のあるコードは文字列として適切なタグ (つまり、Actor の名前は del C:\Windows になります)。それらは合理的な仮定のように見えますか?

4

1 に答える 1

4

パラメーターのリストを使用し、False に設定したままにしておく限りshell、はい、パラメーターはコード インジェクションから安全です。これらはシェルによって解析されないため、コードが実行される可能性はありません。

Windows では、コード インジェクションを使用する可能性は、CreateProcess呼び出しが使用されているという事実によって既に軽減されていることに注意してください。

于 2012-12-02T13:27:09.560 に答える