java - ESAPI.encoder().encodeForSQL 中的validation.properties 有何用途

标签 java esapi

我正在使用 ESPAI 来预防 Java 中的 SQL 注入(inject)。 我只使用 ESAPI.encoder().encodeForSQL(ORACLE_CODEC,queryparam)) 方法。

如果我不在 esapi.properties 中包含 validation.properties,则会收到 IllegaleStateException

请告诉我为什么encodeForSQL()需要validation.properties。

最佳答案

我实际上更担心您正在使用 ESAPI 来阻止 SQL 注入(inject)。通常,这是通过将相关 SQL 查询重写为参数化版本来实现的,例如使用 PreparedStatement 或使用 PreparedStatement 的 JPA 实现。我只是想让您知道,使用 ESAPI 编码 SQL 仅具有临时补救的设计意图,因为特定查询太复杂而无法在事件响应情况下重写。如果您使用 encodeForSQL() 请注意,它是针对编写不良的 SQL 查询的永久性问题的创可贴解决方案。它应该预计查询将被重写,并且对 esapi 的需求将消失。

这是因为从 ESAPI 获得的转义性能不会比从正确编写的 PreparedStatement 获得的性能更好。

ESAPI 需要两个文件才能正常运行。 ESAPI.propertiesvalidation.properties。需要这些文件是因为为了加载大多数类,它们需要从这些文件中读取选项和设置。您没有提供堆栈跟踪,因此不可能诊断您的确切问题,但如果您提供这些文件,问题就会消失。

ESAPI.properties validation.propeties

关于java - ESAPI.encoder().encodeForSQL 中的validation.properties 有何用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246125/

相关文章:

java - 计算Hibernate公式字段中的子表值

java - Spinner onClick 监听器

java - 关于 ESAPI 日志事件

java - cloudbees 和 ESAPI - 如何指向 ESAPI 目录?

java - 在 Selenium Web 驱动程序中使用 TestNG 时方法调用两次

java - 无法从窗口生成器中的调色板拖动项目

java - 如何在EditText字段上显示错误消息之前增加延迟?

Java 安全与 ESAPI

java - 在 ESAPI 中编码和规范化

java - 为什么 ESAPI 编码器不能与 Java 1.8 一起使用