我想让用户编写小型自定义应用程序(想想 WordPress 上的主题或插件)并在我的网站上上传/运行它们。

我正在考虑为此使用 Sinatra 应用程序,因为它会给用户很大的灵活性,然后将它们作为中间件在我的 Rails 应用程序中运行。

但我无法弄清楚这对安全的影响。我尝试创建一个简单的 sinatra 应用程序作为中间件,它可以访问所有 Rails 模型和所有内容 - 所以这很糟糕。有没有办法让机架将它们分开,以便 sinatra 应用程序有效地沙箱化,并且不能做任何坏事(在 API 或我为它们设置的某种特定通信方式之外)?

可能有一种我没有想到的更简单的方法来实现这一点,所以欢迎提出想法。谢谢!

有帮助吗?

解决方案

也许看一下 尝试Ruby / 怪异的沙盒 或其中之一 红宝石沙箱 可以带你去某个地方。

其他提示

你如何知道/信任你的用户?我希望的答案包含诸如"非常"和"紧密".多么容易你可以达到他们有什么尖锐的,痛苦的,如果他们搞砸了?

我不能想到一个简单的方法(见鬼,我不认为一个复杂的一)允许上传和安装这种事情。即使Wordpress,我认为他们不允许任何随机插件安装和运行在WP办网站的风险,即使用意良好的代码引起的问题似乎就是巨大的,我的偏执心态。

西纳特拉肯定会得到的灵活性,但这可能不是一件好事,因为你已经确定。

当然,如果你的用户都是红宝石/Sinatra知识(或能够成为可以接受的如此),那么你可以给他们一个储存库(git,svn或者)对他们的应用程序并将它们部署到适当的地方,在任何一架 特设 或者一些时间表。

想在蹄,并没有任何概念的可行性,如果功能,可以安全地提供比较有限的,你可能会考虑寻找写作某种限制的DSL用于他们使用。如果脚本,因此产生了短暂的/有效的足够了,或许他们可以存储在应用程序的数据库和执行通过 eval?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top