所以我有这个接受单个参数的现有命令,但我需要一些接受stdin参数的东西。
shell脚本包装器如下所示,但由于我将允许不受信任的用户在stdin上传递任意字符串,我想知道是否有人在shell上执行任意命令。
#!/bin/sh
$CMD "`cat`"
显然,如果$ CMD处理参数的方式存在漏洞,我无能为力,所以我担心这样的事情:
答案 0 :(得分:0)
该参数对我来说很好,但是如果命令中可能有空格,那么命令可能有点不稳定。此外,如果您只想从用户那里获得一行,那么您可能更喜欢这样:
#!/bin/bash
read line
exec "$CMD" "$line"
答案 1 :(得分:0)
如果"$(cmd)"
可以扩展为多个单词,很多代码都会被破坏。