1

我使用 SPRING 和 MongoDB 构建了一个大型 JAVA Web 应用程序,在某些情况下,我希望允许我的用户上传自己的代码,并且该应用程序稍后会在需要时运行它。我把这个操作称为“插件框架”,插件当然是用户的代码,我现在更喜欢在 NodeJS 中。

有没有为此目的推荐/已知的架构?我读过pf4jsenecajs,但它们与我的需求完全不同。

谢谢!

4

1 回答 1

0

您完全控制了节点上运行的代码。上传的代码可以访问网络、文件、数据库,随便你。这不是一个好计划。

我建议使用 Java 中的嵌入式 JS 模块,称为 rhino。在这里,您定义代码可以访问的环境。

您可以在此处找到使用 Java 脚本的示例http://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/index.html for jdk7,Javadocs https://docs.oracle。 com/javase/8/docs/api/javax/script/ScriptEngine.html和这里有关 Java8 更改的一些信息http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html

更新:

在下面的评论中,您声明如果代码在另一台服务器上运行,您认为自己是安全的。其实问题还是一样的。只是它不会访问您的应用程序的服务器,而是 JS 代码服务器。

我的建议站得住脚。使用内置的 Javascript 引擎(Rhino 或 Nashorn)实现 JS 执行服务,并将运行的 JS 限制在沙箱中,您可以通过精心实现的 env-access 方法控制脚本的开箱即用范围。它实际上很容易上手,并不比在节点上实现一个远程 javascript 实现引擎更复杂......

于 2017-08-09T09:12:00.167 回答