Недавно мы впервые запустили сканирование Veracode в нашем приложении Java Spring и обнаружили множество недостатков безопасности, и лучшим решением, которое мы смогли определить для многих из них, было кодирование пользовательского ввода через ESAPI.
В этом случае, поскольку был задан вопрос, «пользовательский ввод» означает, например, GUID, полученный из файла cookie, но Veracode распознает, что файлы cookie могут быть фальсифицированы, поэтому содержимое файлов cookie необходимо очистить ... т. е. с использованием кодировки ESAPI. функциональность следующим образом:
logger.debug("Attempting to broadcast message to all connections with GUID " + ESAPI.encoder().encodeForHTML(guid));
Мы используем Maven, поэтому, чтобы включить ESAPI в наш проект, все, что мы сделали, это в нашем файле POM:
<dependency>
<groupId>org.owasp.esapi</groupId>
<artifactId>esapi</artifactId>
<version>2.0.1</version>
</dependency>
И это «просто сработало». Мы буквально ничего не делали, кроме как начали использовать import org.owasp.esapi.ESAPI;
, и мы поехали в город, и это было здорово в местных тестах.
Однако, как только мы перешли к развертыванию, оно потерпело неудачу с:
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) ~[esapi-2.0.1.jar:2.0.1]
at org.owasp.esapi.ESAPI.securityConfiguration(ESAPI.java:184) ~[esapi-2.0.1.jar:2.0.1]
at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99) ~[esapi-2.0.1.jar:2.0.1]
У нас нет доступа к среде развертывания, так как ею управляет третья сторона. Другие вопросы StackOverflow, сообщающие об аналогичных проблемах, сообщали, что ответ на их вопросы связан с отсутствующими ESAPI.properties
файлами. Нам не нужно было беспокоиться ни о чем подобном в нашей локальной разработке и тестировании, но меня беспокоит тот факт, что другие сообщили о необходимости настроить один / настроить путь к нему.
Есть ли способ в нашем коде (это все, что мы действительно даем группе развертывания) гарантировать, что ESAPI будет работать в среде развертывания?