2012-05-23 51 views
3

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

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

是否有人知道这是否实际上是可能的,如果是的话,你可以沙箱它莫名其妙。可能是我可以在编写一些如何过滤XML报告之前?

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

回答

1

看一看在Java的沙盒[1]这是我们在我们的BI解决方案的ReportServer用[2]。我目前正在准备一篇博客文章,解释如何在沙盒环境中运行jasperreports。

至于Birt,这里也适用。这里的用户不能直接编写java代码,但是他们可以使用Rhino,它最终具有相同的效果。

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

2

我放开了Web服务[1],允许开发人员使用上的i-报告得出模板生成PDF,

于是,我只好解决同样的问题,我的第一次尝试是使用Java安全引擎API,但它太复杂,需要很多权限。因此,当我搜索Heroku如何隔离每个Web应用程序时,我发现了Linux容器(LXC)[2],因此我决定在一个lxc容器中隔离每个“开发人员沙箱”。

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

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

+1

不被所产生的远程和固定,因为它会需要DAO存取的理想解决方案。但我没有看到其他的选择。 – Gary

+0

就我而言,该服务支持XML作为数据源,而不是SQL数据源,因此不需要数据库访问。 –