我正在使用Jasper报告: - TIBCO Jaspersoft Studio-6.2.0.final Jasper服务器: - JasperReports服务器社区版(v6.2.0)
我将报告书模板Jasper报告发布到Jasper Server。但是,当我从Jasper Server运行报告时,我收到了以下错误
错误消息 发生了错误。请联系您的系统管理员。 (6632)错误跟踪 com.jaspersoft.jasperserver.api.JSSecurityException:出错了 发生了。请联系您的系统管理员。 (6632)参数: 在 com.jaspersoft.jasperserver.api.security.validators.Validator.validateSQL(Validator.java:500) 在 com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuter.createDatasource(JRTimezoneJdbcQueryExecuter.java:167) 在 net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1129) 在 net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:696) 在 net.sf.jasperreports.engine.fill.JRFillDatasetRun.evaluate(JRFillDatasetRun.java:226) 在 net.sf.jasperreports.engine.fill.JRFillElementDataset.evaluateDatasetRun(JRFillElementDataset.java:238) 在 net.sf.jasperreports.engine.fill.JRFillCrosstab.evaluate(JRFillCrosstab.java:610) 在 net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:281) 在 net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:504) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2026) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:752) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:259) 在 net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:119) 在 net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:558) 在 net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:396) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:742) 在 net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:58) 在 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) 在java.lang.Thread.run(未知来源)
我已在security.validation.sql.on=false
文件中更新了security-config.properties
。
但我仍然收到此错误。
如何解决此问题?
答案 0 :(得分:3)
您可能在SQL查询中使用了一些特殊关键字(例如“with”子句)。 您可能需要编辑jasperserver-pro / WEB-INF / classes / esapi / validation.properties文件。 并编辑该行, Validator.ValidSQL =(是)^ \ S *(选择| ADD_NEW_CLAUSE_HERE)\ S + ^; + $
然后重启服务器。
证明您使用的查询有助于获得更全面的答案。
答案 1 :(得分:1)
出于安全原因(!)我个人会建议(使用它是非常不安全的,如下所述!)
将此设置为
Validator.ValidSQL=.*
甚至更好
#/jasperserver/WEB-INF/classes/esapi/security-config.properties
security.validation.sql.on=false
所以实际没有进行有效性检查。
为什么?因为之前的(标准正则表达式)非常弱(并且不成熟 - 例如阻止with ... select ...
子句)检查并且可能表明SQL注入将在更高程度上被阻止< /强>
A)如果我不关心我的环境中的安全性/ SQL注入,或者成本 - 价值因素效率低下(请非IT预算负责人在这里决定! ),我现在就这样离开
B)如果我担心环境中的安全性/ SQL注入,我建议