0

所以我有这个接受单个参数的现有命令,但我需要一些可以通过标准输入接受参数的东西。

像下面这样的 shell 脚本包装器可以工作,但由于我将允许不受信任的用户在标准输入上传递任意字符串,我想知道是否有人可能在 shell 上执行任意命令。

#!/bin/sh
$CMD "`cat`"

显然,如果 $CMD 在处理参数的方式上有漏洞,我无能为力,所以我担心这样的事情:

  • 以某种方式允许用户转义双引号并将输入传递给 $CMD 的参数 #2
  • 不知何故导致另一个任意命令运行
4

2 回答 2

0

该参数对我来说看起来不错,但命令可能有点不稳定,如果它可以有一个空格。此外,如果您只想从用户那里得到一行,那么您可能更喜欢这样:

#!/bin/bash

read line
exec "$CMD" "$line"
于 2012-07-04T21:23:45.183 回答
0

"$(cmd)"如果可以扩展到多个单词,则会破坏很多代码。

于 2012-07-04T21:25:05.353 回答