发生了错误。请联系您的系统管理员。 (6632) Jasper 服务器 6.2 中的错误

An error has occurred. Please contact your system administrator. (6632) error in Jasper server 6.2

我正在使用 Jasper 报告:- TIBCO Jaspersoft Studio-6.2。0.final Jasper 服务器:- JasperReports 服务器社区版 (v6.2.0)

我将报告书模板 Jasper 报告发布到 Jasper 服务器中。但是当我 运行 来自 Jasper Server 的报告时,我得到以下错误

Error Message An error has occurred. Please contact your system administrator. (6632) Error Trace com.jaspersoft.jasperserver.api.JSSecurityException: An error has occurred. Please contact your system administrator. (6632) Arguments: at com.jaspersoft.jasperserver.api.security.validators.Validator.validateSQL(Validator.java:500) at com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuter.createDatasource(JRTimezoneJdbcQueryExecuter.java:167) at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1129) at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:696) at net.sf.jasperreports.engine.fill.JRFillDatasetRun.evaluate(JRFillDatasetRun.java:226) at net.sf.jasperreports.engine.fill.JRFillElementDataset.evaluateDatasetRun(JRFillElementDataset.java:238) at net.sf.jasperreports.engine.fill.JRFillCrosstab.evaluate(JRFillCrosstab.java:610) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:281) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:504) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2026) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:752) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:259) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:119) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:558) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:396) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:742) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:58) at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:216) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

我已经在 security-config.properties 文件中更新了 security.validation.sql.on=false

但我仍然收到此错误。

如何解决这个问题?

您可能在 SQL 查询中使用了一些特殊关键字(例如 "with" 子句)。 您可能需要编辑 jasperserver-pro/WEB-INF/classes/esapi/validation.properties 文件。 并编辑该行, Validator.ValidSQL=(?is)^\s*(select|ADD_NEW_CLAUSE_HERE)\s+^;+$.

并重启服务器。

证明您使用的查询将有助于获得更全面的答案。

出于安全原因(!)我个人会向

推荐(使用它非常不安全,如下所述!)
  1. 设置为

    Validator.ValidSQL=.*
    

    甚至更好

    #/jasperserver/WEB-INF/classes/esapi/security-config.properties 
    security.validation.sql.on=false
    

    所以实际上没有进行有效性检查。 为什么?因为之前的(标准正则表达式)是一个非常弱的(并且不成熟 - 例如防止with ... select ...子句)检查并且可能建议SQL将在更高程度上防止注射.

A) 如果我不关心 security/SQL 在我的环境中注入 或者成本价值因素效率低下(请非 IT 预算负责人上船来决定!),我会暂时这样

B) 如果我担心 security/SQL 在我的环境中注入 ,我建议