Python 从代码注入以任何方式传递到子流程的参数是否安全?
从代码注入以任何方式传递到子流程的参数是否安全 我正在构建一个小python程序来做一些电影文件标记。为了方便起见,我使用subprocess.call()将标记信息传递给AtomicParsley(在Windows上)。标签信息是自动检索的在线源。如果某个人将代码放在标记中(即用某种rd术语替换参与者),子流程是否可以安全地执行该操作?这更多的是一个概念性的问题,而不是关于语言细节的问题Python 从代码注入以任何方式传递到子流程的参数是否安全?,python,subprocess,Python,Subprocess,从代码注入以任何方式传递到子流程的参数是否安全 我正在构建一个小python程序来做一些电影文件标记。为了方便起见,我使用subprocess.call()将标记信息传递给AtomicParsley(在Windows上)。标签信息是自动检索的在线源。如果某个人将代码放在标记中(即用某种rd术语替换参与者),子流程是否可以安全地执行该操作?这更多的是一个概念性的问题,而不是关于语言细节的问题 subprocess.call使用['AtomicParsley',filename'--tag1',ta
subprocess.call使用['AtomicParsley',filename'--tag1',tag1_info,(…)]执行。由于命令的第一部分保证是AP可执行文件的名称,第二部分保证是有效的文件名,因此我认为metainfo数据库中的任何恶意代码都将作为字符串写入相应的标记(即,参与者的名称为del C:\Windows)。这些似乎是合理的假设吗?只要您使用参数列表并将
shell
设置为False,是的,参数就不会被代码注入。它们不会被shell解析,因此不受任何代码执行机会的约束
请注意,在Windows上,由于使用了
CreateProcess
调用,使用代码注入的可能性已经降低了。只要使用参数列表并将shell
设置为False,则参数不会被代码注入。它们不会被shell解析,因此不受任何代码执行机会的约束
请注意,在Windows上,由于使用了
CreateProcess
调用,使用代码注入的可能性已经降低了。事实并非如此,它们可能会触发一些错误并导致许多不愉快的事情,子进程可能会有很多安全错误……如果子进程本身存在安全缺陷,则所有赌注都没有。但是如果没有,那么你的python代码就不会打开任何新的。不是真的,它们可能会触发一些错误并导致很多不愉快的事情,子进程可能会有很多安全错误……如果子进程本身有安全缺陷,那么所有的赌注都没有了。但是如果没有,那么您的python代码就没有打开任何新代码。