私たちは最近、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がデプロイメント環境で確実に動作するように、私たちのコード(実際にデプロイメントチームに提供しているもの)には何らかの方法がありますか?
あなたの質問に対する明確さと回答が追加されました。 – Steverino
まず、2.0.1には暗号に関連するセキュリティ上の脆弱性があります。 2.1.0.1を使用する必要があります – avgvstvs