发生了错误。请联系您的系统管理员。 (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+^;+$.
并重启服务器。
证明您使用的查询将有助于获得更全面的答案。
出于安全原因(!)我个人会向
推荐(使用它非常不安全,如下所述!)
设置为
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 在我的环境中注入 ,我建议
- 阅读有关 SQL 注入的文章,以及如何在针对我的目标 databases/ORM 框架(例如
- 搜索更好的正则表达式子句(如果存在)? => 在我看来 improper/week 方法只适用于 "little PHP shop style apps"
我正在使用 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+^;+$.
并重启服务器。
证明您使用的查询将有助于获得更全面的答案。
出于安全原因(!)我个人会向
推荐(使用它非常不安全,如下所述!)设置为
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 在我的环境中注入 ,我建议
- 阅读有关 SQL 注入的文章,以及如何在针对我的目标 databases/ORM 框架(例如
- 搜索更好的正则表达式子句(如果存在)? => 在我看来 improper/week 方法只适用于 "little PHP shop style apps"