4

我正在编写一个 Java Web 应用程序,我希望它允许用户执行基本的 PDF 报告。通常我会为此使用 Jasper Reports。但是这次我希望用户能够在 iReport 中编辑自己的报告并上传它们。这应该足够直截了当。

这让我想到,Jasper 让您可以有效地在报告中编写代码,这些代码在生成报告时执行。是否可以编写一份对 Java API 以及我的网络应用程序具有完全访问权限的报告。我不希望用户能够杀死 tomcat,或者更糟的是仍然使用我构建的 DAO api 来读取其他用户数据。

有谁知道这是否真的可行,如果可以,您能否以某种方式对其进行沙箱处理。可能我可以在报告 XML 编译之前过滤它吗?

还有人知道这是否同样适用于其他开源报告工具,例如 BIRT?

4

2 回答 2

2

我正在发布一个网络服务 [1] 以允许开发人员使用在 i-report 上绘制的模板生成 PDF,

所以我不得不解决同样的问题,我的第一次尝试是使用 Java 安全引擎 API,但它太复杂了,需要很多权限。

因此,当我在搜索 Heroku 如何隔离每个 Web 应用程序时,我发现了 Linux 容器 (LXC) [2],因此我决定将每个“开发人员沙箱”隔离在一个 lxc 容器中。

它不会阻止用户关闭“沙箱服务器”,但如果他们这样做,他们只会关闭自己的沙箱,其他用户的沙箱不会受到影响。

[1] http://reports.simpleservic.es/landing [2] http://en.wikipedia.org/wiki/LXC

于 2013-04-08T15:25:09.843 回答
1

看看我们在 BI 解决方案 Reportserver [2] 中使用的 java-sandbox [1]。我目前正在准备一篇博文,将解释如何在沙盒环境中运行 jasperreports。

至于Birt,同样适用于那里。这里用户不能直接写java代码,但是可以用Rhino,最终效果是一样的。

[1] http://blog.datenwerke.net/p/the-java-sandbox.html [2] http://reportserver.datenwerke.net

于 2013-05-31T16:01:23.147 回答