java 无法使用ESAPI2.1.0.1:访问控制器类(org.owasp.esapi.reference.DefaultAccessController)CTOR引发异常

uqjltbpv  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(282)

我在使用esapi-2.1.0.1.jar时遇到了一个问题。
我的开发环境:
1.8日元
Eclipse2018 - 12
ESAPI在方法A中工作良好,但在方法B中失败。

package com;

import org.owasp.esapi.ESAPI;

public class MainEntryPoint {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("A");
        System.out.println(ESAPI.encoder().encodeForHTML("<li>ABC some html here"));
        System.out.println("A end");
        
        System.out.println("B");
        System.out.println(ESAPI.accessController().toString());
        System.out.println("B end");
    }

}

控制台:

A
System property [org.owasp.esapi.opsteam] is not set
System property [org.owasp.esapi.devteam] is not set
Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Found in 'org.owasp.esapi.resources' directory: C:\Users\Ansticelee\.esapi\2101\ESAPI.properties
Loaded 'ESAPI.properties' properties file
SecurityConfiguration for Validator.ConfigurationFile.MultiValued not found in ESAPI.properties. Using default: false
Attempting to load validation.properties via file I/O.
Attempting to load validation.properties as resource file via file I/O.
Found in 'org.owasp.esapi.resources' directory: C:\Users\Ansticelee\.esapi\2101\validation.properties
Loaded 'validation.properties' properties file
&lt;li&gt;ABC some html here
A end
B
Exception in thread "main" org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException AccessController class (org.owasp.esapi.reference.DefaultAccessController) CTOR threw exception.
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
    at org.owasp.esapi.ESAPI.accessController(ESAPI.java:85)
    at com.MainEntryPoint.main(MainEntryPoint.java:20)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:86)
    ... 2 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/configuration/ConfigurationException
    at org.owasp.esapi.reference.DefaultAccessController.<init>(DefaultAccessController.java:32)
    at org.owasp.esapi.reference.DefaultAccessController.getInstance(DefaultAccessController.java:22)
    ... 7 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.ConfigurationException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 9 more

我做了什么?:
1.在eclipse中创建一个新项目(动态Web项目)
1.将"esapi-2.1.0.1.jar"和"log4j-1.2.12.jar"放入文件夹Web内容/Web INF/lib中
1.将"www.example.com"和"www.example.com"放入文件夹C:\用户\Ansticelee.esapi\2101 ESAPI.properties " & " validation.properties " into folder C:\Users\Ansticelee.esapi\2101
1.设置VM参数:-Dorg.owasp.esapi.resources="C:\Users\Ansticelee\.esapi\2101"
1.右键单击www.example.com〉运行方式〉Java应用程序 MainEntryPoint.java > Run As > Java Application
(提醒:www.example.com是我的java文件)MainEntryPoint.java is my java file)
(4.的详图:
在Eclipse中,右键单击我的项目(运行方式〉运行配置...〉Java应用程序〉esapi2101〉参数〉VM参数)
2.和3.的详图
我从https://repo1.maven.org/maven2/org/owasp/esapi/esapi/2.1.0.1/下载了esapi-2.1.0.1.jar
我从https://mvnrepository.com/artifact/log4j/log4j/1.2.12下载了log4j-1.2.12.jar
我从https://github.com/ESAPI/esapi-java-legacy/tree/2.1/configuration/.esapi下载了2家住宿
方法B的详细信息:
我在https://owasp.org/www-pdf-archive/JavaEE-ESAPI_2.0a_install.pdf的第16页(步骤5)中看到了它
这是我第一次发表问题。
感谢您耐心阅读。
我怎样才能使上面提到的方法B工作得很好呢?

nhn9ugyo

nhn9ugyo1#

根本原因是Eclipse找不到该类

org.apache.commons.configuration.ConfigurationException

如以下类未发现异常所示:

Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.ConfigurationException

这意味着您丢失了包含该类的任何Apache Commons jar。(有几个ESAPI使用的ApacheCommons库,因此,如果不做额外的研究,我就不能说得更具体一些,而且我现在很着急。)鉴于您提到显式地添加了Log4Jjar(在步骤2中,您提到"将" esapi-2.1.0.1.jar "和" log4j-1.2.12.jar "放入文件夹WebContent/WEB-INF/lib"),您似乎没有将Eclipse项目配置为Maven或Gradle项目。将您的Eclipse项目重新配置为Maven或Gradle项目,这些传递依赖关系jar文件会自动下载并拉入。如果您不采取这种方法,您将不断遇到类似的问题。
最后一个要点...请使用ESAPI www.example.com,这是截至本公告发布时的最新版本。由于ESAPI团队规模较小,我们只能在发布问题时积极解决最新版本中出现的问题。2.5.1.0这就是我回答的原因。)另外,如果您计划使用ESAPI来处理任何严重的问题,您需要使用一个没有任何已知漏洞的版本。有关详细信息和可用版本,请参见https://mvnrepository.com/artifact/org.owasp.esapi/esapi。 which is why I responded.) Also if you plan to uses ESAPI for anything serious, you need to use a version that doesn't have any know vulnerabilities. Note that 2.1.0.1 has 2 known CVEs; see https://mvnrepository.com/artifact/org.owasp.esapi/esapi for details and available versions.
希望这个有用。

相关问题