Пытаюсь использовать ESAPI, но получаю ошибку - PullRequest
18 голосов
/ 08 октября 2011

Я пытаюсь использовать ESAPI.jar для обеспечения безопасности моего веб-приложения. В основном я только начал использовать ESAPI.jar. Но проблема в том, что я не могу запустить даже простую программу, использующую ESAPI. Небольшой фрагмент кода:

String clean = ESAPI.encoder().canonicalize("someString");
Randomizer r=ESAPI.randomizer();    
System.out.println(r);
System.out.println(clean);

Я получаю эту ошибку:

Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Not found in 'org.owasp.esapi.resources' directory or file not readable: D:\Eclipse-Workspace\Test\ESAPI.properties
Not found in SystemResource Directory/resourceDirectory: .esapi\ESAPI.properties
Not found in 'user.home' (C:\Documents and Settings\user.user) directory: C:\Documents and Settings\user.user\esapi\ESAPI.properties
Loading ESAPI.properties via file I/O failed. Exception was: java.io.FileNotFoundException
Attempting to load ESAPI.properties via the classpath.
ESAPI.properties could not be loaded by any means. Fail. Exception was: java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
Exception in thread "main" org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException SecurityConfiguration class (org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
    at org.owasp.esapi.ESAPI.securityConfiguration(ESAPI.java:184)
    at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99)
    at org.rancore.testJasp.TestEsapi.main(TestEsapi.java:59)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:86)
    ... 3 more
Caused by: org.owasp.esapi.errors.ConfigurationException: ESAPI.properties could not be loaded by any means. Fail.
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:439)
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.<init>(DefaultSecurityConfiguration.java:227)
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.getInstance(DefaultSecurityConfiguration.java:75)
    ... 8 more
Caused by: java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfigurationFromClasspath(DefaultSecurityConfiguration.java:667)
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:436)
    ... 10 more

Я попытался скопировать 3 файла свойств ESAPI в моей исходной папке, а также настроить их по пути сборки, но все же мне не удалось. Я перепробовал множество комбинаций и комбинаций, но безрезультатно.

Пожалуйста, ведите меня.

Содержимое файла свойств:

# User Messages
Error.creating.randomizer=Error creating randomizer

This.is.test.message=This {0} is {1} a test {2} message

# Validation Messages

# Log Messages

Ответы [ 10 ]

22 голосов
/ 08 октября 2011

Файл ESAPI.properties должен содержать более 3 строк.См. Например:

https://web.archive.org/web/20150904064147/http://code.google.com:80/p/owasp-esapi-java/source/browse/trunk/configuration/esapi/ESAPI.properties

По моему опыту, файл ESAPI.properties должен находиться в той же папке, что и esapi.jar, или должен быть скомпилирован в jar-файл.каталог ресурсов.

/resources/ESAPI.properties

Я считаю, что любой из них должен работать.Если ESAPI не находит файл в одном месте, он смотрит в других.

Код для этого здесь в строке 620:

https://web.archive.org/web/20161005210258/http://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/main/java/org/owasp/esapi/reference/DefaultSecurityConfiguration.java

3 голосов
/ 07 октября 2014

Я только что прошел через это сам.

  1. Я создал папку с именем esapi в своем каталоге C: / users / myname / и загрузил ESAPI.properties, validation.properties и ESAPI-AccessControlPolicy.xml, который помог мне преодолеть все ошибки, связанные с отсутствием поиска файлов. ESAPI ищет файлы в нескольких местах. Кстати, я использую 64-битную Windows 7.
  2. Тогда мне пришлось обновить некоторые банки. Я должен был сделать это с самого начала, но я этого не знал. Я получаю эту ошибку: Класс AccessController (org.owasp.esapi.reference.DefaultAccessController) Возникла исключительная ситуация CTOR. для каждой фляги, которая должна была быть более новой версией, такой как коллекции commons или log4j В нижней части трассировки стека он будет ссылаться на поврежденную банку.

Когда я добавил новые jar-файлы из каталога lib esapi, все просто заработало!

Я получил это сообщение в конце своей консоли:

ESAPI.accessController found: org.owasp.esapi.reference.DefaultAccessController@1cb8deef

Примечание. Файл ESAPI_en_US.properties существует, но в нем всего несколько строк. Просто используйте файл в: \ esapi-2.1.0-dist \ src \ test \ resources \ esapi \ ESAPI.properties. Это полный файл.

1 голос
/ 09 марта 2016

Ссылка SecurityConfiguration управляет всеми настройками, используемыми ESAPI, в одном месте. В этой эталонной реализации ресурсы могут быть размещены в нескольких местах, которые ищутся в следующем порядке:

1) Внутри каталога, установленного с помощью вызова SecurityConfiguration.setResourceDirectory ("C: \ temp \ resources").

2) Внутри каталога System.getProperty ("org.owasp.esapi.resources"). Вы можете установить это в командной строке Java следующим образом (например):

            java -Dorg.owasp.esapi.resources="C:\temp\resources"

Возможно, вам придется добавить это в сценарий запуска, который запускает ваш веб-сервер. Например, для Tomcat в скрипте «catalina», который запускает Tomcat, вы можете установить для переменной JAVA_OPTS строку -D выше.

3) Внутри каталога System.getProperty ("user.home") + "/.esapi" (поддерживается для обратной совместимости) или внутри каталога System.getProperty ("user.home") + "/ esapi".

4) Первый каталог ".esapi" или "esapi" на пути к классам. (Первый для обратной совместимости.)

1 голос
/ 09 июня 2014

После этой проблемы и просмотра документации по установке (esapi-xxx-dist \ documents \ esapi4java-core-xx-install-guide.pdf) я нашел очень полезный раздел, в котором подробно рассказывалось, что файл свойств может находиться где угодно, при условии, что флаг vm (-Dorg.owasp.esapi.resources=path") указывает на конкретный каталог. Например, если я вставлю файл в папку «resources» в корне каталога моего проекта, то флаг будет:

-Dorg.owasp.esapi.resources="path\to\project\root\resources"
0 голосов
/ 17 января 2018

У меня тоже была такая же проблема. Я решил это с помощью небольшого решения Джеймса Дринкара. В основном я создал новую папку с именем ESAPI и добавил файл ESAPI.properties, Validation.properties и ESAPI-AccessControlPolicy.xml. И заархивировал его в jar-файл и добавил в папку lib в WebContet / WEB-INF и собрал его по пути, и он заработал.

* Чтобы заархивировать его в файл jar, я использовал команду windows move ESAPI ESAPI.jar

0 голосов
/ 15 января 2016

Спасибо за предоставление информации

-Dorg.owasp.esapi.resources = "путь \ к \ проекта \ корень \ ресурсы"

Это хороший источник информации, который решил мою проблему

0 голосов
/ 30 сентября 2014

распаковывает файл свойств jar add в папку ресурсов.

изначально получая такую ​​же ошибку, после обновления файла свойств он работал у меня

0 голосов
/ 27 июня 2014
  1. Извлеките банку с эспи
  2. создать папку с именем resources под org.owasp.esapi
  3. копия ESAPI.properties в org.owasp.esapi.resources
  4. Сборка и развертывание
0 голосов
/ 09 октября 2011

Посмотрите на различные скрипты в 'src / examples / scripts', и они покажут вам один простой способ контролировать, где находятся файлы ESAPI.properties. (Это для ESAPI 2.0 или более поздней версии.)

Вы найдете копию файла ESAPI.properties, которая будет находиться в папке «configuration / esapi».

0 голосов
/ 08 октября 2011

Можете ли вы положить свой файл (с этим именем) в:

D:\Eclipse-Workspace\Test\ESAPI.properties

И снова покажите нам содержимое и исключение.

...