我得到一个shell脚本的安全问题:什么是参与这一文件
#!/bin/sh
#file name : eg.1
X=$1
eval "$X"
如果我启动此脚本为一组用户或其他用户,有没有提出的任何安全问题?
我得到一个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; #'
第五元件是 星期四03月27日16时13分47秒EDT 2014
more details
这完全取决于什么这个脚本的参数是。这是整个剧本吗?这似乎有点无意义。 –
是的,它是,我想知道如果我喂我任何恶意参数,是否会对系统进行任何安全问题。 – VinceFIT
答案是:是的。 –