Определить свойства конфигурации ESAPI без доступа к среде развертывания?

Недавно мы впервые запустили сканирование 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 будет работать в среде развертывания?


person Steverino    schedule 02.06.2017    source источник
comment
Внесли ясность и ответы на ваши вопросы.   -  person Steverino    schedule 03.06.2017
comment
Во-первых, в версии 2.0.1 есть уязвимости безопасности, связанные с криптографией. Вы должны использовать 2.1.0.1   -  person avgvstvs    schedule 04.06.2017


Ответы (1)


На самом деле, большинство других вопросов здесь, в SO, дают вам ответ. Вот комментарий из кода:

/**
 * The reference {@code SecurityConfiguration} manages all the settings used by the ESAPI in a single place. In this reference
 * implementation, resources can be put in several locations, which are searched in the following order:
 * <p>
 * 1) Inside a directory set with a call to SecurityConfiguration.setResourceDirectory( "C:\temp\resources" ).
 * <p>
 * 2) Inside the System.getProperty( "org.owasp.esapi.resources" ) directory.
 * You can set this on the java command line as follows (for example):
 * <pre>
 *      java -Dorg.owasp.esapi.resources="C:\temp\resources"
 * </pre>
 * You may have to add this to the start-up script that starts your web server. For example, for Tomcat,
 * in the "catalina" script that starts Tomcat, you can set the JAVA_OPTS variable to the {@code -D} string above.
 * <p>
 * 3) Inside the {@code System.getProperty( "user.home" ) + "/.esapi"} directory (supported for backward compatibility) or
 * inside the {@code System.getProperty( "user.home" ) + "/esapi"} directory.
 * <p>
 * 4) The first ".esapi" or "esapi" directory on the classpath. (The former for backward compatibility.)
 * <p>
 * Once the Configuration is initialized with a resource directory, you can edit it to set things like master
 * keys and passwords, logging locations, error thresholds, and allowed file extensions.
 * <p>
 * WARNING: Do not forget to update ESAPI.properties to change the master key and other security critical settings.
 *
 * @author Jeff Williams (jeff.williams .at. aspectsecurity.com) <a href="http://www.aspectsecurity.com">Aspect Security</a>
 * @author Jim Manico (jim .at. manico.net) <a href="http://www.manico.net">Manico.net</a>
 * @author Kevin Wall (kevin.w.wall .at. gmail.com)
 */

В вашем случае для команды развертывания, которая будет запускать ваше веб-приложение, предоставьте группе развертывания каталог в соответствии со свойством среды выполнения java, указанным в разделе 2 здесь. Им нужно будет добавить его к любому сценарию/команде, запускающему ваш веб-контейнер.

person avgvstvs    schedule 12.07.2017