使用系统执行某些操作时如何防止代码注入?
How do I prevent code injection when executing something using system?
我正在编写一个脚本来检查 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'
,问题又回来了。
使用 process*
函数,它为命令名称及其参数采用单独的参数,绕过 shell 到 运行 程序。
(process* "docker" "inspect" name)
我正在编写一个脚本来检查 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'
,问题又回来了。
使用 process*
函数,它为命令名称及其参数采用单独的参数,绕过 shell 到 运行 程序。
(process* "docker" "inspect" name)