gpt4 book ai didi

java - ESAPI 中 ESAPI.encoder().encodeForSQL 的 validation.properties 有什么用

转载 作者:行者123 更新时间:2023-11-29 04:51:35 26 4
gpt4 key购买 nike

我正在使用 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.propertiesvalidation.properties。这些文件是必需的,因为为了加载大多数类,它们需要从这些文件中读取选项和设置。您没有提供堆栈跟踪,因此无法诊断您的确切 问题,但如果您提供这些文件,问题应该会消失。

ESAPI.properties validation.propeties

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com