Миграция log4j с 1 на 2 вызывает ошибки ESAPI

Я обновил свой log4j с 1.X до 2.3. Лог работает нормально. Однако я использую ESAPI, и теперь он выдает мне ошибки.

Это мой оператор импорта ESAPI:

import org.owasp.esapi.ESAPI;

Вот как я использую ESAPI:

ESAPI.encoder().encodeForHTML(somevalue)

Исключение, которое я получаю:

exception org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Encoder class (org.owasp.esapi.reference.DefaultEncoder) CTOR threw exception.
org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Encoder class (org.owasp.esapi.reference.DefaultEncoder) CTOR threw exception.
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129) ~[esapi-2.1.0.jar:2.1.0]
    at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99) ~[esapi-2.1.0.jar:2.1.0]

Я использую Eclipse и log4j-api-2.3.jar и log4j-core-2.3.jar.


person AspUser7724    schedule 28.06.2016    source источник
comment
Если вы вынете log4j, вы все равно получите ошибку esapi?   -  person rajah9    schedule 29.06.2016
comment
@ rajah9 мне было бы трудно проверить, так как он вложен глубоко в приложение. Удаление log4j вызовет большое количество ошибок. Однако я могу сказать вам, что использование log4j1.2.9 работало нормально.   -  person AspUser7724    schedule 29.06.2016
comment
К вашему сведению:. Последняя версия ESAPI — 2.1.0.1.   -  person avgvstvs    schedule 29.06.2016
comment
Я попытался использовать ESAPI 2.1.0.1 и получил следующую ошибку: org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Класс SecurityConfiguration (org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR выдал исключение.   -  person AspUser7724    schedule 29.06.2016


Ответы (1)


У вас есть log4j-1.2-api-2.3.jar? Я подозреваю, что он не находит никаких привязок к используемому API Log4j 1.2.

Альтернативой могут быть реализации LogFactory и Logger для Log4j 2 для использования ESAPI, но я подозреваю, что это больше работы, чем вы, вероятно, хотите сделать.

person rgoers    schedule 28.06.2016
comment
Я использую log4j-1.2-api-2.3.jar, log4j-api-2.3.jar и log4j-core-2.3.jar. Я добавил все это в свой проект. - person AspUser7724; 29.06.2016
comment
ОК - это должно быть все, что вам нужно. Если бы это был я, я бы загрузил исходный код ESAPI и прошелся по ObjFactory.make, поместив точки останова в класс DefaultEncoder, чтобы вы могли видеть, что дает сбой при создании объекта. Это всегда немного сложно, так как вам нужно поставить точку останова в реальном классе, который получает исключение. DefaultEncoder просто жертва. - person rgoers; 29.06.2016
comment
Можете ли вы указать мне направление и пример реализации LogFactory и Logger для Log4j 2? Я не уверен, что вы имели в виду под этим. - person AspUser7724; 29.06.2016
comment
Если вы перейдете на github.com/ESAPI/esapi-java-legacy/tree/develop/src/main/java/ вы увидите 3 класса, которые реализуют интерфейсы ESAPI LogFactory и Logger. Вы можете создать их версии для привязки ESAPI к Log4j 2, настроив ESAPI для использования ваших реализаций. - person rgoers; 30.06.2016