闪亮的应用程序中的安全控制台

克里里亚的格里高

我目前正在开发闪亮的应用程序,旨在通过交互式课程教授R。为此,我已经处理了多项选择题和自由文本题。现在,我要解决的问题是应用程序的用户(学生)可以在文本字段中输入他们自己的R代码并运行它。

我当前的实现基本上eval在观察者内部使用。

## evaluate the users expression and store the results.
observeEvent(input$evluate, {
  reactives$result <- eval(parse(text = input$console_in))
})

由于用户可以在服务器上插入并运行任意代码,因此此实现在安全性方面存在严重缺陷。

  • 有什么最佳实践可以使控制台更安全?
  • 评估期间应如何指定工作目录?

计划在某个时候发布该软件的开源版本。因此,我更喜欢一个不依赖平台且不会使应用程序部署复杂化的解决方案。

格雷格·L

对于评估任意代码,我喜欢白名单方法,在此方法中,您将所有已知和安全的函数放在一个空环境中进行评估。我认为这是简单易用的解决方案,而不是将函数列入黑名单或尝试在R之外进行沙箱测试。用示例提供更好的答案:安全地评估R中的算术表达式?

另外,这是一个采用黑名单方法的POC软件包:https : //github.com/Rapporter/sandboxR

我能想到的所有其他沙盒方法都是特定于Linux的。有一个https://github.com/jeroen/RAppArmor,它使用AppArmor在操作系统级别进行沙箱测试。然后使用Docker或Linux容器运行沙盒代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章