2

在我的 Rails 应用程序中,我想让用户提交自定义“主题”以各种方式显示数据。

我认为他们可以使用 API 调用获取视图中的数据,我可以为此创建身份验证机制。也是一个经过身份验证的 API 来保存数据。所以这可能是安全的。

但我正在努力寻找让用户上传/提交他们自己的主题代码的最佳方式。

我希望这有点像人们可以上传东西的 Wordpress 主题/插件。但存在一些安全隐患。例如,如果我将用户提交的上传“主题”放在 Rails 应用程序内的某个目录中,这有什么风险?

如果用户在他们的主题中插入任何 Rails 可执行代码,即使这是他们当时对所有模型、每个人的数据等具有完全访问权限的视图,即使来自其他用户也是如此。所以这不好。

我需要一些方法让上传的主题存在于 rails 应用程序的沙箱中,但我还没有看到一个好的方法来做到这一点。有任何想法吗?

4

3 回答 3

2

您可以尝试 Liquid ( http://www.liquidmarkup.org/ ),它的开发目的是允许用户为 Shopify 创建自己的主题。Liquid 主题不是真正的 Ruby 代码,因此您不必担心用户会尝试访问他们不应该访问的内容。

另一种选择是 Ruby 的“受污染”对象概念,它可用于实现安全主题/插件,同时仍允许用户编写实际的 Ruby 代码。你可以在这里阅读更多关于它的信息。我无法保证它的安全性,因为我从未使用过它。

于 2010-03-23T04:22:03.213 回答
0

看起来这可能有潜力: http: //flouri.sh/2007/10/27/safely-exposing-your-app-to-a-ruby-sandbox

于 2010-03-23T04:20:03.913 回答
0

我也在考虑让用户提交他们自己的 sinatra 应用程序,然后在 Rails 中运行它们。看起来使用机架路由这是可能的。不过,我无法找到有关如何/是否将 sinatra 应用程序从 rails 应用程序沙盒化的任何数据。如果有人有信息请告诉我!

于 2010-03-25T06:00:04.140 回答