是否有任何形式阻止用户在R中调用shell命令,特别是通过system()
函数?
我的安全问题是我通过RStudio Server向用户提供在线R环境。登录后,他们可以执行system('cat /etc/passwd')
等恶意指令。
例如,在PHP语言中,我们可以通过在/etc/php.ini
配置文件中指定它们来限制一组函数的使用:
disable_functions=exec,passthru,shell_exec,system,proc_open,popen
答案 0 :(得分:3)
以下是一种似乎有效的方法:
myfunc <- function(...) print("GTFO")
unlockBinding("system", as.environment("package:base"))
assign("system", myfunc, "package:base")
但是,请注意,还有许多其他方法可以调用命令行。例子:
system2("echo", "hi")
readLines(pipe("echo hi"))
.Internal(system("echo hi", F))
因此,不要依赖于模糊命令以获得完整的安全性。