Я пытался оценить библиотеку OWASP ESAPI, но у меня возникли проблемы с ее правильной инициализацией. Я настроил папку ресурсов для ESAPI.properties и validation.properties, и они загружаются из пути к классам без проблем. Однако файл antisamy-esapi.xml не загружается из пути к классам, и я обнаружил ошибку 2010 года, в которой упоминается об этом. Я получаю следующие ошибки:
Попытка загрузить antisamy-esapi.xml в качестве файла ресурсов через файловый ввод-вывод. Не найден в каталоге org.owasp.esapi.resources или файл не читается: C:\Users\mydir\resin-pro-4.0.27\antisamy-esapi.xml Не найден в SystemResource Directory/resourceDirectory: .esapi\antisamy -esapi.xml Не найден в каталоге «user.home» (C:\Users\mydir): C:\Users\mydir\esapi\antisamy-esapi.xml
Я развертываю приложение, используя эту библиотеку, для смолы. Я попытался вручную поместить файл xml во все вышеперечисленные места, и единственный, который, наконец, сработал, был мой домашний каталог, который не очень хорошо подходит для производственного развертывания.
Я также следовал рекомендации, найденной в другом месте, в которой говорится, что необходимо установить свойство -Dorg.owasp.esapi.resources. Это тоже не сработало, но, что более интересно, ошибка не изменилась, что заставляет меня думать, что настройка по какой-то причине не была подобрана.
Любые указатели на то, где этот файл должен быть расположен в моем проекте, чтобы он правильно загружался после развертывания в контейнере?
Заранее спасибо.
Обновлять:
Таким образом, при копании кода выясняется, что существует специальная функция для загрузки ESAPI.properties, поэтому этот файл можно загрузить из стандартного каталога ресурсов (или любого другого каталога src), который развернут в контейнере. Однако функция загрузки для antisamy-esapi.xml просто проверяет определенный каталог в user.home, настроенный пользовательский каталог или результат ClassLoader.getSystemResource(). Не уверен, почему эти подпрограммы разделены. После нескольких часов возни с этим я потерял терпение и скопировал DefaultSecurityConfiguration.java и исправил метод getResourceFile(), чтобы использовать тот же код поиска, что и loadConfigurationFromClasspath(). Затем я вызываю ESAPI.override() с этим классом, и теперь он работает правильно.