bash - 使用系统执行某些操作时如何防止代码注入(inject)?

标签 bash scheme racket code-injection

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

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

获取调用docker inspect $name的结果在壳里。我怎样才能防止代码注入(inject)?有人可以输入someName ; sudo rm -rf / --no-preserve-root结果不会好。我可以使它具有 docker inspect "$name" 的效果或者甚至将其放在单引号之间,但在这两种情况下,有人都可以输入 someName"someName'相反,问题又回来了。

最佳答案

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

(process* "docker" "inspect" name)

关于bash - 使用系统执行某些操作时如何防止代码注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45064077/

相关文章:

bash - 了解管道和重定向命令

计划和让错误

bash - 在 Bash 中删除空行并修剪周围的空格

linux - 如何删除sed中给定变量的行?

lisp - 如何选择在 DrScheme 中使用的语言?

scheme - 这个过程是递归的还是迭代的(长尾递归)?

Racket 中的 Lambda 解释

scheme - Racket\Scheme 中的返回类型

bash - 解析变更日志并提取版本的变更

loops - 为什么在 Racket 代码中 for 循环如此缓慢