使用系统执行某些内容时如何防止代码注入?



我正在编写一个脚本来检查有关Docker容器的某些内容;它是哪个容器取决于用户输入。所以我有这样的代码:

(define pipes (process (string-append "docker inspect " name)))

获取在外壳中调用docker inspect $name的结果。如何防止代码注入?有人可以输入someName ; sudo rm -rf / --no-preserve-root结果不会很好。我可以让它具有docker inspect "$name"的效果,甚至将其放在单引号之间,但在这两种情况下,有人都可以输入someName"someName',问题又回来了。

使用process*函数,该函数为命令名称及其参数采用单独的参数,绕过 shell 来运行程序。

(process* "docker" "inspect" name)

最新更新