Ошибка ESAPI Class Not Found на Glassfish

Я только начал пытаться использовать класс OWASP ESAPI в приложении RESTFul, которое я создаю.

Я установил esapi, следуя их инструкциям на веб-сайте, используя svn, но это не сработало.

Затем я включил файл jar, который мне нужен, вручную, настроив путь сборки и добавив его как внешний файл JAR. Затем он появился в папке Java Resources\Libraries, и все было скомпилировано и опубликовано нормально. Я использую стеклянную рыбу с затмением.

Я не понимаю, как, если я могу скомпилировать код, у стеклянной рыбы нет класса? Нужно ли устанавливать банку на сервер?

Соответствующий код:

import org.owasp.esapi.ESAPI;

String clean = rs.getString(column_name); //saving column data to temp variable
clean = ESAPI.encoder().canonicalize(clean); //decoding data 
clean = ESAPI.encoder().encodeForHTML(clean); //encoding data

Вот какую ошибку выдает:

2015-06-29T20:50:16.244+0100|Warning: StandardWrapperValve[Jersey Web     Application]: Servlet.service() for servlet Jersey Web Application threw exception
java.lang.NoClassDefFoundError: org/owasp/esapi/ESAPI
    at com.pododdle.util.ToJSON.toJSONArray(ToJSON.java:60)
    at com.pododdle.dao.MySQL.runDBQuery(MySQL.java:55)
    at com.pododdle.service.CategoryService.getAllCategories(CategoryService.java:10)
    at com.pododdle.resources.CategoryResource.getCategories(CategoryResource.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)

person Tom O'Brien    schedule 29.06.2015    source источник
comment
Я не знаком с Glassfish, но в tomcat он либо скомпилируется в ваш warfile, либо вы поместите его в каталог ‹tomcat›/lib.   -  person avgvstvs    schedule 30.06.2015
comment
Я попытался поместить .jar для ESAPI в каталог библиотеки Glassfish, но это не сработало, выдало ту же ошибку. Есть ли в любом случае добавление его в путь к классам или что-то может работать?   -  person Tom O'Brien    schedule 30.06.2015


Ответы (1)


Я решил эту проблему, добавив файл esapi.properties в папку WEB-INF/classes. (Мне пришлось создать эту папку классов)

Файл esapi.properties находится в папке «configuration» каталога установки esapi 1.4.4.

Я думаю, вам нужно перезапустить веб-сервер, и тогда он будет работать без сбоев.

Чрезвычайно раздражающая ошибка, и я понятия не имею, почему это работает, но эй!

person Tom O'Brien    schedule 01.07.2015
comment
Эсапи 1.4.4? Это ужасно устарело! Самая последняя версия — 2.1, да и та устарела: с 2013 года не было выпущено ни одного релиза. Каковы ваши требования к безопасности? - person avgvstvs; 02.07.2015
comment
Просто делаю простой сайт для отдыха - совершенно новый для аспекта безопасности. Просто пытаюсь предотвратить внедрение sql в мою базу данных. Вы рекомендуете использовать что-то другое? - person Tom O'Brien; 02.07.2015
comment
Для внедрения SQL, для всего, что вы используете для своего уровня ORM, просто убедитесь, что вы всегда используете параметризованные запросы. Никогда не объединяйте пользовательский ввод в запрос. ESAPI может помочь в этом в определенной степени — существуют кодеки для экранирования строк для SQL, но они предназначены только для быстрого исправления устаревшего кода, который необходимо реорганизовать. Кроме того, всегда сохраняйте необработанные данные: не переходите в HTML перед сохранением. Всегда экранировать при отправке данных в другой контекст (браузер, JSON и т. д.) - person avgvstvs; 02.07.2015