0

したがって、単一の引数を受け入れるこの既存のコマンドがありますが、代わりに stdin を介して引数を受け入れるものが必要です。

次のようなシェル スクリプト ラッパーは機能しますが、信頼できないユーザーが stdin で任意の文字列を渡すことを許可するため、誰かがシェルで任意のコマンドを実行する可能性があるかどうか疑問に思っています。

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

明らかに、$CMD が引数を処理する方法に脆弱性がある場合、私にできることは何もないので、次のようなことを懸念しています。

  • どういうわけか、ユーザーが二重引用符をエスケープして、入力を $CMD の引数 #2 に渡すことができるようにします
  • どういうわけか別の任意のコマンドを実行させる
4

2 に答える 2

0

パラメーターは問題ないように見えますが、コマンドにスペースを含めることができる場合、コマンドは少し不安定になる可能性があります。また、ユーザーから 1 行だけ取​​得する場合は、次のようにすることをお勧めします。

#!/bin/bash

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

"$(cmd)"複数の単語に展開できる場合、多くのコードが壊れます。

于 2012-07-04T21:25:05.353 に答える