Jasper报告安全沙箱

时间:2012-05-23 08:33:40

标签: security jasper-reports reporting sandbox

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

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

是否有人知道这是否真的可行,如果可以的话,你能以某种方式沙箱。可能我可以在编写报告之前过滤报告XML吗?

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

2 个答案:

答案 0 :(得分:2)

我正在发布一个Web服务[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

答案 1 :(得分: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