代码之家  ›  专栏  ›  技术社区  ›  Brian Armstrong

如何安全地让用户提交Rails应用程序的自定义主题/插件

  •  2
  • Brian Armstrong  · 技术社区  · 15 年前

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

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

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

    我希望它能像WordPress主题/插件那样工作,人们可以在其中上传内容。但也存在一些安全风险。例如,如果我把用户提交的上传的“主题”放在Rails应用程序中某个地方的自己的目录中,这有什么风险?

    如果用户在其主题中插入任何Rails可执行代码,即使它是视图,那么即使是从其他用户那里,他们也可以完全访问所有模型、每个人的数据等。所以这不好。

    我需要一些方法让上传的主题存在于Rails应用程序的沙盒中,但我还没有看到一个好的方法来实现这一点。有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Todd Yandell    15 年前

    你可以试试液体( http://www.liquidmarkup.org/ ,这是为了允许用户创建自己的主题进行购物。Liquid Themes不是真正的Ruby代码,因此您不必担心用户试图访问他们不应该访问的内容。

    另一种选择是Ruby__对象概念,它可以用于实现安全主题/插件,同时允许用户编写实际的Ruby代码。你可以多读一些 here. 我可以保证它的安全性,因为我从未使用过它。

        2
  •  0
  •   Brian Armstrong    15 年前
        3
  •  0
  •   Brian Armstrong    15 年前

    我还考虑让用户提交自己的Sinatra应用程序,然后在Rails中运行它们。在机架路由方面,这是可能的。但是,我还没有找到关于Sinatra应用程序如何/是否是从Rails应用程序沙盒中得到的任何数据。如果有人知道信息,请告诉我!