我正在编写一个脚本来检查有关Docker容器的内容;哪个容器取决于用户输入。所以我有这样的代码:
(define pipes (process (string-append "docker inspect " name)))
获取在shell中调用docker inspect $name
的结果。如何保护代码注入?有人可以输入someName ; sudo rm -rf / --no-preserve-root
,结果不会很好。我可以使它具有docker inspect "$name"
的效果,甚至可以将它放在单引号之间,但在这两种情况下,有人可以输入someName"
或someName'
而问题又回来了。
答案 0 :(得分:3)
使用process*
函数,该函数为命令名及其参数提供单独的参数,绕过shell运行程序。
(process* "docker" "inspect" name)