Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Maven Java EE项目中的OWASP ESAPI simpleTest_Security_Jakarta Ee_Maven_Owasp_Esapi - Fatal编程技术网

Security Maven Java EE项目中的OWASP ESAPI simpleTest

Security Maven Java EE项目中的OWASP ESAPI simpleTest,security,jakarta-ee,maven,owasp,esapi,Security,Jakarta Ee,Maven,Owasp,Esapi,我有一个小小的JavaEE项目,我必须用OWASP ESAPI来保护它 我在Maven中集成了ESAPI,如下所示: <!-- ESAPI Version 2.0.1 --> <dependency> <groupId>org.owasp.esapi</groupId> <artifactId>esapi</artifactId> <version>2.0.1</version>

我有一个小小的JavaEE项目,我必须用OWASP ESAPI来保护它

我在Maven中集成了ESAPI,如下所示:

<!-- ESAPI Version 2.0.1 -->
<dependency>
    <groupId>org.owasp.esapi</groupId>
    <artifactId>esapi</artifactId>
    <version>2.0.1</version>
</dependency>
我还将
ESAPI.properties
validation.properties
复制到

src/main/resources
(我不确定它是否工作,但启动服务器时没有收到错误)

我查看了(记录得非常糟糕)并复制了示例

“为了测试ESAPI是否已成功集成和配置, 创建一个名为EsapiIntegrationTest.java的文件并粘贴到:

“如果您可以运行此文件并查看println输出,则ESAPI已 已成功安装和配置!您现在可以开始使用 ESAPI功能可保护您的web应用程序!”

我将其“翻译”为我的示例:

@ManagedBean(name="testController")
@RequestScoped
public class TestController  {  

    public String esapiTest(){

    System.out.println("ESAPI.accessController found: " 
                               + ESAPI.accessController());

    return "ESAPI.accessController found: " + ESAPI.accessController();
    }
}
我有一个文件
test.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="content">

    <h2>esapi test</h2>

        <h:outputText value="#{testController.esapiTest()}" />  

</ui:define>
</ui:composition>
我知道-这是在我的配置中运行的

我有两个问题:
我的maven和服务器启动配置正确吗?
因为错误看起来像ESAPI找不到ESAPI记录器函数


甚至可以在我的设置中使用简单的测试代码片段吗

(p.s.也尝试在没有maven的情况下使用它,只是包含下载的jar——但它不起作用)

我想念这样的东西:
(这来自swingset演示示例,而不是我自己的项目)


希望有人能帮忙

我只能说esapi安装正确。Esapi喜欢输出大量数据,但有趣的是:

Found in 'user.home' directory: /home/joergi/.esapi/ESAPI.properties
Loaded 'ESAPI.properties' properties file
Found in 'user.home' directory: /home/joergi/.esapi/validation.properties
Loaded 'validation.properties' properties file
Found in 'user.home' directory: /home/joergi/.esapi/ESAPI_logging_file
我认为您在项目中缺少依赖项。检查堆栈跟踪中的以下行:

Caused by: java.lang.ClassNotFoundException: org.owasp.esapi.reference.Log4JLogFactory2 from [Module "deployment.bachelor_demo.war:main" from Service Module Loader]
它可能位于错误的类加载器中,或者您可能在esapi.properties文件中为项目配置了错误的记录器

[编辑]

在ESPAI.properties文件中有以下几行:

# Log4JFactory Requires log4j.xml or log4j.properties in classpath - http://www.laliluna.de/log4j-tutorial.html
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
#ESAPI.Logger=org.owasp.esapi.reference.JavaLogFactory
我认为这些对你来说非常重要


除此之外,类Log4JLogFactory存在于esapi jar中,因此不应该存在真正的问题。

您的类路径中有多个版本的Log4J库,这可能是由于您的应用程序正在使用另一个库的下游依赖性造成的。检查依赖关系树,找出复制库的加载位置,并将其排除在pom.xml中

mvn dependency:tree
这将显示应用程序的依赖关系树

<exclusion>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
</exclusion>

log4j
log4j

将此排除添加到pom.xml中的罪魁祸首依赖项中,整个世界都应该是正确的。

我浪费了一天时间试图解决此问题
ClassNotFoundException Log4JLogFactory2
。尝试查看是否有任何log4j重复依赖项,如最高评级的接受答案所示,但没有效果

最后,我意识到ESAPI首先在
$HOME/.ESAPI/
文件夹中查找配置,只有当它不在那里时,它才会返回到classpath的
ESAPI
文件夹。在我的例子中,问题是我刚刚部署了这个示例,正如其自述文件中所描述的,我将其配置复制到了我的主文件夹中,在该配置中,这是一行有问题的行

ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory2

然后我假设我的应用程序将从其类路径的esapi文件夹中获取配置
Log4JLogFactory2
出现在我一直在追逐的演示代码库ghost中。

hi@Tom,我写道:我错过了类似(你引用的东西)的东西这是Swingset演示示例中的东西-我在我自己的项目中错过了类似的东西。。。这就是为什么我不知道它是否正确实现的原因,但是如果我像上面用maven写的那样包含ESAPI,那么它必须包含在内,或者?抱歉,我没有尝试执行您的代码。我只是想给你一个指向搜索方向的指针。我明白;)esapi的内容没有很好的文档记录。。。。IRC总是空的等等。有点沮丧。非常感谢!!!这对我帮助很大。。。现在一切都正常了。。。非常感谢你,克里斯+1、我也遇到了同样的问题。下面是SwingSet页面的链接,讨论与此答案相关的配置设置。向下滚动至“配置”。以SwingSet为例,如果您正在开发web应用程序,则可以使用。
# Log4JFactory Requires log4j.xml or log4j.properties in classpath - http://www.laliluna.de/log4j-tutorial.html
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
#ESAPI.Logger=org.owasp.esapi.reference.JavaLogFactory
mvn dependency:tree
<exclusion>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
</exclusion>
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory2