在使用系统执行某些操作时如何防止代码注入?

时间:2017-07-12 17:23:36

标签: bash scheme racket code-injection

我正在编写一个脚本来检查有关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'而问题又回来了。

1 个答案:

答案 0 :(得分:3)

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

(process* "docker" "inspect" name)