linux - 该文件涉及什么安全问题

标签 linux shell access-control

我有一个 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; #'

The fifth element is Thu Mar 27 16:13:47 EDT 2014
more details

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

相关文章:

asp.net - 如何在有限制的 IIS7 中添加 Access-Control-Allow-Origin header

amazon-web-services - 控制从我的应用程序对 AWS S3 文件的访问

linux - 组用户名将 root 显示为组但不允许删除

linux - GDB - 汇编程序返回/bin/sh : 0: Can't open �

linux - 在 if 语句中使用 grep

c - 在c程序中获取wget文件大小

linux - 可以将文件符号链接(symbolic link)到网址吗?

linux - 修改后的linux操作系统的版本控制

linux - 使用 sed 替换 bash 文件中的变量 - 输出滞后

c++ - 什么时候在 OOP 中使用友元是谨慎的?