从代码注入以任何方式传递给子进程的参数是否安全?
我正在构建一个小的python程序来做一些电影文件标记。为方便起见,我使用subprocess.call()将标记信息传递给AtomicParsley(在Windows上)。标签信息是在线源,自动检索。如果某个人将代码放在标签中(即用某种rd术语替换了演员),那么子进程是否可以安全地执行?这更像是一个概念性问题,而不是关于语言细节的问题。
subprocess.call使用['AtomicParsley',文件名,' - tag1',tag1_info,(...)]执行。由于命令的第一部分保证是AP可执行文件的名称,第二部分保证是有效的文件名,我认为metainfo数据库中的任何恶意代码都只能作为字符串写入相应的标记(即Actor的名称是del C:\ Windows)。那些似乎是合理的假设吗?
答案 0 :(得分:4)
只要您使用参数列表并将shell
设置为False,是的,参数从代码注入中是安全的。它们不会被shell解析,因此不会受到任何代码执行机会的影响。
请注意,在Windows上,使用CreateProcess
调用已经减少了使用代码注入的可能性。