Попытка использования ESAPI Но получение ошибки
Я пытаюсь использовать 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
Ответы
Ответ 1
Файл 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/ссылка /DefaultSecurityConfiguration.java
Ответ 2
Я только что прошел через это сам.
- Я создал папку с именем esapi в своем каталоге C: /users/myname/и загрузил ESAPI.properties, validation.properties и ESAPI-AccessControlPolicy.xml, который помог мне справиться со всеми ошибками при поиске файлов. ESAPI ищет файлы в нескольких местах. Кстати, я использую 64-битную Windows 7.
- Затем мне пришлось обновить некоторые банки. Я должен был сделать это с самого начала, но я этого не знал. Я получаю эту ошибку: класс AccessController (org.owasp.esapi.reference.DefaultAccessController) выдал исключение CTOR. для каждой фляги, которая должна была быть более новой версией, как, например, коллекции commons или log4j. В нижней части трассировки стека он будет ссылаться на поврежденную банку.
Когда я добавил новые файлы jar из каталога lib esapi, все работало!
Я получил это сообщение в конце в моей консоли:
ESAPI.accessController found: [email protected]
Примечание. Существует файл ESAPI_en_US.properties, но в нем всего несколько строк. Просто используйте файл в:\esapi-2.1.0-dist\src\test\resources\esapi\ESAPI.properties. Это полный файл.
Ответ 3
После этой проблемы и просмотра документации по установке (esapi-xxx-dist\documents\esapi4java-core-xx-install-guide.pdf) я обнаружил очень полезный раздел, в котором подробно рассказывалось, что файл свойств может находиться где угодно, при условии наличия vm flag (-Dorg.owasp.esapi.resources=path"
) указывает на конкретный каталог. Например, если я помещу файл в папку" resources "в корне каталога моего проекта, флаг будет:
-Dorg.owasp.esapi.resources="path\to\project\root\resources"
Ответ 4
Ссылка SecurityConfiguration управляет всеми настройками ESAPI в одном месте. В этой ссылочной реализации ресурсы могут быть размещены в нескольких местах, которые выполняются в следующем порядке:
1) Внутри набора каталогов с вызовом SecurityConfiguration.setResourceDirectory( "C:\temp\resources" ).
2) Внутри каталога System.getProperty( "org.owasp.esapi.resources" ). Вы можете установить это в командной строке java следующим образом (например):
java -Dorg.owasp.esapi.resources="C:\temp\resources"
Возможно, вам придется добавить это к запуску script, который запустит ваш веб-сервер. Например, для Tomcat в "Каталине" script, которая запускает Tomcat, вы можете установить переменную JAVA_OPTS в строку -D выше.
3) Внутри каталога System.getProperty( "user.home" ) + "/.esapi" (поддерживается для обратной совместимости) или внутри каталога System.getProperty( "user.home" ) + "/esapi".
4) Первый каталог ".esapi" или "esapi" в пути к классам. (Первый для обратной совместимости.)
Ответ 5
Можете ли вы поместить свой файл (с этим именем) в:
D:\Eclipse-Workspace\Test\ESAPI.properties
И снова покажите нам содержимое и исключение.
Ответ 6
Посмотрите на различные скрипты в 'src/examples/scripts', и они покажут вам один простой способ контролировать, где находятся файлы ESAPI.properties. (Это для ESAPI 2.0 или более поздней версии.)
Вы найдете копию файла ESAPI.properties в папке "configuration/esapi".
Ответ 7
- Извлеките esapi jar
- создайте папку с именем resources под
org.owasp.esapi
- скопируйте
ESAPI.properties
в org.owasp.esapi.resources
- Построение и развертывание
Ответ 8
извлеките банку
добавить файл свойств в папку ресурсов.
изначально получает ту же ошибку, после обновления файла свойств он работал у меня
Ответ 9
Спасибо за предоставление информации
-Dorg.owasp.esapi.resources = "путь\к\проекта\Root\ресурсы"
Это хороший источник информации и разрешил мою проблему.
Ответ 10
У меня была такая же проблема. Я решил это, используя немного решения Джеймса Дринкара. В основном я создал новую папку с именем ESAPI и добавил файл ESAPI.properties, Validation.properties и ESAPI-AccessControlPolicy.xml. И заархивировал его в файл jar и добавил в папку lib в WebContet/WEB-INF и поместил его в путь, и он сработал.
* Чтобы архивировать его в файл jar, я использовал команду windows move ESAPI ESAPI.jar