我有一个shell脚本:

#!/bin/sh
#file name : eg.1
X=$1
eval "$X"


如果我以组用户或其他用户身份启动此脚本,是否会引起安全问题?

最佳答案

eval命令非常强大,非常容易滥用。
它使您的代码被解析两次,而不是一次;这意味着,例如,如果您的代码中包含变量引用,则shell的解析器将评估该变量的内容。如果变量包含shell命令,则无论您是否需要,shell都可以运行该命令。这可能会导致意外结果,尤其是当可以从不受信任的来源读取变量时。



# This code is evil and should never be used!
fifth() {
_fifth_array=$1
eval echo "\"The fifth element is \${$_fifth_array[4]}\""    # DANGER!
}
a=(zero one two three four five)
fifth a


输出

fifth 'x}"; date; #'



  第五个要素是
  2014年3月27日星期四16:13:47
  more details

关于linux - 此文件涉及什么安全问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24227168/

10-15 05:09