Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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
Java 是否包装ESAPI_Java_Maintainability_Decoupling_Esapi - Fatal编程技术网

Java 是否包装ESAPI

Java 是否包装ESAPI,java,maintainability,decoupling,esapi,Java,Maintainability,Decoupling,Esapi,我们有几个Web应用程序需要ESAPI java库提供的功能。我的同事和我都进退两难,究竟是直接使用ESAPI从而创建对ESAPI的直接依赖,还是创建一个抽象ESAPI调用的接口 通过抽象对库的依赖,我们可以灵活地在需要时轻松切换到其他选项。除此之外,我们还可以定义自己的接口,它更符合我们的需求 但是,当我们确定接口中需要的方法时,它看起来越来越像ESAPI本身中使用的接口。ESAPI本身就是一个门面,具有可配置的验证器、加密器等实现 ESAPI是否足够成熟,直接依赖它是安全的,还是坚持使用这个

我们有几个Web应用程序需要ESAPI java库提供的功能。我的同事和我都进退两难,究竟是直接使用ESAPI从而创建对ESAPI的直接依赖,还是创建一个抽象ESAPI调用的接口

通过抽象对库的依赖,我们可以灵活地在需要时轻松切换到其他选项。除此之外,我们还可以定义自己的接口,它更符合我们的需求

但是,当我们确定接口中需要的方法时,它看起来越来越像ESAPI本身中使用的接口。ESAPI本身就是一个门面,具有可配置的验证器、加密器等实现


ESAPI是否足够成熟,直接依赖它是安全的,还是坚持使用这个包装器是明智的

我认为这是一种竞争

但我使用ESAPI已经有一两年了(只用于输出转义),直接使用这个库没有问题

我在XSL样式表中使用了转义方法,所以我制作了一个包装器,但只是为了更好的访问,而不是为了封装

如果您对在接口后面提取它有更好的感觉,那么您必须这样做

ESAPI是否足够成熟,直接依赖它是安全的,还是坚持使用这个包装器是明智的

我的故事是,自两年以来,我们一直在使用
ESAPI
(仅在从用户以html形式键入的输入字符串中剥离各种注入字符模式之前进行规范化),这直接取决于它的接口,而且没有任何问题

这样一个小小的依赖关系是在单个java类中实现的(从servlet过滤器调用):如果接口发生更改,我们只需更改该类中的几行代码。因此,在目前的实现中,包装接口不会给我们带来任何优势


我建议通过查看其他来源(如或直接向ESAPI社区询问)来评估项目的成熟度。

ESAPI的目标是成为包装器,允许您根据需要交换组件。在它当前的版本中,这根本不是一个可行的方法,然而,因为ESAPI占用了巨大的空间,坦率地说,大多数人只使用了ESAPI的一小部分

尽管如此,ESAPI 3.0旨在解决这个问题,但我们(ESAPI团队)很难让社区参与到新产品的开发中。您可以查看针对ESAPI 3.0的github存储库,该存储库旨在解决注释中所述的问题,并将重点转移回提供所有安全控件的API,而不是试图成为安全控件本身


Guthub:< /P> < P>好,虽然我原则上同意“ESAPI应该是<强> be <强>包装器”的咒语,但我认为你总是需要考虑更广泛的问题。首先也是最重要的一点,这可能取决于您打算使用多少ESAPI,以及它在源代码中的部署范围有多广。如果您只打算在某个地方的某个孤立代码中使用它的一小部分,那么用另一个层来包装它可能没有意义,因为如果需要的话,修改它会相对简单。另一方面,如果你处于另一个极端,保护你的投资并将其与未来的任何变化隔离可能是一个好主意。(例如,拟议的ESAPI 3(见)计划有非常不同的接口。)

最后,尽管我很难说,但ESAPI的支持最近还不是很好。在过去的2-3年里,只有我自己和另外一个人对此做出了贡献。事实上,虽然尚未达成协议,但ESAPI很可能会失去其OWASP“旗舰”地位(请参阅)。甚至有人说,除非我们开始招募更多的志愿者,否则就把这个项目定为“日落”。如果您只想使用ESAPI进行输出编码和数据验证,那么我建议您查看OWASP Java编码器项目和OWASP Java HTML消毒器项目。(对不起,我手头没有链接,但我相信你和我一样知道如何使用搜索引擎。)


-kevin wall/ESAPI Java项目负责人

是的,这确实是一个基于观点的问题。有人在谈论ESAPI需要去哪里,我个人认为它试图做的太多了。。。他们应该将其分解成更小的库,然后根据需要导入,而不是一站式服务。我不知道他们定义的接口可能会有很大的变化(不像编码/解码会有很大的变化),但是如果我要开始一种全新的方法,我会使用一种适配器模式,就像你正在做的那样。OWASP不久前取消了ESAPI的旗舰地位。正在从ESAPI贡献者那里获得答案。由于缺少志愿者,进展似乎停滞不前。3.0可能与2.0有很大的不同。我会用包装纸的。谢谢。我喜欢通过ESAPI定位器静态访问所有功能。希望看到人们对这个项目重新产生兴趣