1

从代码注入中传递给子进程的参数是否安全?

我正在构建一个小型 python 程序来做一些电影文件标记。为方便起见,我使用 subprocess.call() 将标签信息传递给 AtomicParsley(在 Windows 上)。标签信息是在线资源,自动检索。如果有人将代码放在标签中(即用某种 rd 术语替换演员),子流程是否可以安全地执行?这更像是一个概念问题,而不是关于语言细节的问题。

subprocess.call 使用 ['AtomicParsley',filename,'--tag1',tag1_info,(...)] 执行。由于命令的第一部分保证是 AP 可执行文件的名称,而第二部分保证是有效的文件名,我应该认为元信息数据库中的任何恶意代码都会作为字符串写入适当的标签(即,Actor 的名称将是 del C:\Windows)。这些看起来像是合理的假设吗?

4

1 回答 1

4

只要您使用参数列表并将shell其设置为 False,是的,这些参数不会受到代码注入的影响。它们不会被 shell 解析,因此不会受到任何代码执行机会的影响。

CreateProcess请注意,在 Windows 上,使用调用的事实已经降低了使用代码注入的机会。

于 2012-12-02T13:27:09.560 回答