2017-06-02 13 views
0

私たちは最近、Java SpringアプリケーションでVeracodeスキャンを初めて実行し、多くのセキュリティ上の欠陥を発見しました。多くの場合、ESAPIを介してユーザー入力をエンコードすることが最も良い解決策でした。デプロイメント環境にアクセスできないESAPI構成プロパティを判別しますか?

この場合、「ユーザー入力」は、たとえばクッキーに由来するGUIDを意味しますが、Veracodeはクッキーが改ざんされて、クッキーの内容を消毒する必要があることを認識しています。 、ESAPIエンコーディング機能を使用すると、次のように

logger.debug("Attempting to broadcast message to all connections with GUID " + ESAPI.encoder().encodeForHTML(guid)); 

を私たちのプロジェクトでESAPIを含めるために、私たちがやったすべてが私たちのPOMファイルであったように、我々は、Mavenを使用している:

<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ファイルがないという報告がありました。私たちは地元の開発者やテストのようなことは心配する必要はありませんでしたが、他の人たちが1つを設定してパスを設定する必要があることを報告していることが心配です。

ESAPIがデプロイメント環境で確実に動作するように、私たちのコード(実際にデプロイメントチームに提供しているもの)には何らかの方法がありますか?

+0

あなたの質問に対する明確さと回答が追加されました。 – Steverino

+0

まず、2.0.1には暗号に関連するセキュリティ上の脆弱性があります。 2.1.0.1を使用する必要があります – avgvstvs

答えて

0

実際、ここの他の質問のほとんどはあなたに答えを与えてくれます。ここでは、コードからのコメントです:あなたのケースでは

/** 
* 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) 
*/ 

は、あなたのWebアプリを実行する展開コマンドのために、ここではセクション2に記載されているJavaランタイムプロパティに応じて展開チームにディレクトリを与えます。彼らは、あなたのウェブコンテナを回転させるどのスクリプト/コマンドがトリガされても、それを追加する必要があります。

関連する問題