从stdin到shell的任意输入

时间:2012-07-04 21:14:13

标签: security shell unix

所以我有这个接受单个参数的现有命令,但我需要一些接受stdin参数的东西。

shell脚本包装器如下所示,但由于我将允许不受信任的用户在stdin上传递任意字符串,我想知道是否有人在shell上执行任意命令。

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

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

  • 以某种方式允许用户转义双引号并将输入传递到$ CMD的参数#2
  • 以某种方式导致另一个仲裁命令运行

2 个答案:

答案 0 :(得分:0)

该参数对我来说很好,但是如果命令中可能有空格,那么命令可能有点不稳定。此外,如果您只想从用户那里获得一行,那么您可能更喜欢这样:

#!/bin/bash

read line
exec "$CMD" "$line"

答案 1 :(得分:0)

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