阻止用户以R语言调用shell命令

时间:2018-05-03 20:13:07

标签: r shell system

是否有任何形式阻止用户在R中调用shell命令,特别是通过system()函数?

我的安全问题是我通过RStudio Server向用户提供在线R环境。登录后,他们可以执行system('cat /etc/passwd')等恶意指令。

例如,在PHP语言中,我们可以通过在/etc/php.ini配置文件中指定它们来限制一组函数的使用:

disable_functions=exec,passthru,shell_exec,system,proc_open,popen

1 个答案:

答案 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))

因此,不要依赖于模糊命令以获得完整的安全性。