- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ESPAI 在 Java 中预防 SQLInjection。我只使用 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.properties
和 validation.properties
。这些文件是必需的,因为为了加载大多数类,它们需要从这些文件中读取选项和设置。您没有提供堆栈跟踪,因此无法诊断您的确切 问题,但如果您提供这些文件,问题应该会消失。
关于java - ESAPI 中 ESAPI.encoder().encodeForSQL 的 validation.properties 有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246125/
我正在使用 ESPAI 在 Java 中预防 SQLInjection。我只使用 ESAPI.encoder().encodeForSQL(ORACLE_CODEC,queryparam)) 方法。
我是一名优秀的程序员,十分优秀!