【问题标题】:Jasper Report Security SandboxingJasper 报告安全沙盒
【发布时间】:2012-05-23 08:33:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: security jasper-reports reporting sandbox


    【解决方案1】:

    我正在发布一项网络服务 [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

    【讨论】:

    • 不是理想的解决方案,因为它需要远程和安全的 DAO 访问。但我没有看到任何其他选择。
    • 在我的例子中,该服务支持 XML 作为数据源,而不是 SQL 数据源,因此不需要数据库访问。
    【解决方案2】:

    看看我们在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多