你能让用户上传Sinatra应用程序并在Rails中作为中间件运行吗?

时间:2010-03-25 08:08:34

标签: ruby-on-rails sinatra rack middleware

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

我正在考虑使用Sinatra应用程序,因为它可以为用户提供很大的灵活性,然后在我的rails应用程序中将它们作为中间件运行。

但我无法弄清楚这种安全隐患。我尝试创建一个简单的sinatra应用程序作为中间件,它可以访问所有的rails模型和所有东西 - 所以这很糟糕。有没有办法使机架保持这些独立性,以便sinatra应用程序有效地沙箱化并且不能做任何不好的事情(在API之外或我设置的某些特定方式进行通信)?

我可能还有一种更简单的方法可以实现这一目标,所以我们也不会想到这些想法。谢谢!

2 个答案:

答案 0 :(得分:1)

您对用户的了解程度如何?我希望答案包含诸如“极端”和“亲密”之类的词语。如果他们陷入困境,你能用一些尖锐而痛苦的东西轻松到达他们吗?

我想不出一个简单的方法(哎呀,我想不出一个复杂的方法)来允许上传和安装这类东西。即使使用Wordpress,我也不认为它们允许在WP托管网站上安装/运行任何随机插件 - 即使是好的代码导致问题的风险对于我偏执的思想来说似乎也是巨大的。

Sinatra肯定会给予灵活性,但这可能不是一件好事,正如你已经确定的那样。

当然,如果您的用户是Ruby / Sinatra识字(或能够变得可接受),那么您可以为他们的应用程序提供存储库(git,svn或其他)并将它们部署到Rack中的适当位置< em> ad hoc 或在某些时间表上。

考虑到蹄子,没有任何可行性概念,如果可以安全地提供的功能相对有限,您可以考虑编写某种受限制的DSL供他们使用。如果这样生成的脚本足够短/有效,也许它们可以存储在应用程序的数据库中并通过eval执行?

答案 1 :(得分:1)

或许查看TryRuby / The Freaky Sandbox或其中一个Ruby sandboxes可能会带您到某个地方。