log4j ESAPI.clearCurrent()中出现异常错误;不知道ESAPI.Logger使用什么

xlpyo6sf  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(171)

尝试在Java Web应用程序中使用ESAPI验证时,出现下一个异常:

org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Authenticator class (org.owasp.esapi.reference.FileBasedAuthenticator) CTOR threw exception.
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)    
    at org.owasp.esapi.ESAPI.authenticator(ESAPI.java:92)   
    at org.owasp.esapi.ESAPI.clearCurrent(ESAPI.java:61)    
...
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.owasp.esapi.logging.log4j.Log4JLogFactory
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:74)
    at org.owasp.esapi.ESAPI.logFactory(ESAPI.java:137)
    at org.owasp.esapi.ESAPI.getLogger(ESAPI.java:154)

我们用途:

电子邮件服务器应用程序接口-2.2.3.0.jar
日志4j-1.2-应用程序接口-2.12.4.jar
日志4j-api-2.12.4.jar文件
日志4j-核心-2.12.4.jar

ESAPI.properties中的此定义:

ESAPI.Logger=org.owasp.esapi.logging.log4j.Log4JLogFactory

其他的定义也不起作用:


# ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
oiopk7p5

oiopk7p51#

有了这部作品:

ESAPI.Logger=org.owasp.esapi.reference.JavaLogFactory
0lvr5msh

0lvr5msh2#

简而言之,JLLMNCHR提供的答案实际上是正确的。
以下是一些更重要的缺失详细信息...对ESAPI.properties文件中ESAPI.Logger属性的完全限定类名的更改以及其他相关更改在www.example.com的ESAPI 2.2.1.0发行说明(首次添加对SLF 4J的支持时)中首次提及https://github.com/ESAPI/esapi-java-legacy/blob/develop/documentation/esapi4java-core-2.2.1.0-release-notes.txt#L128-L155这些更改在www.example.com中首次提及,和ESAPI的pom.xml中提到的ESAPI-Project-Users Google组中也宣布了它。
另外,鉴于您仍在使用Log4J 1 logger,我想提醒您注意这一重要声明。对Log4J 1的支持(除非您想通过SLF 4J桥使用它)将消失,可能在下一个版本中,我们计划在下个月的某个时候发布。有关详细信息,请参阅https://github.com/ESAPI/esapi-java-legacy/discussions/711

相关问题