HDIV和ESAPI之间的区别

我打算使用Spring

MVC开发一个Web应用程序,并试图找出哪个是解决十大OWASP问题的最佳库。我来看看有两个HDIV和ESAPI,请问任何一个可以帮助我了解它们之间的区别。

感谢您的帮助。

回答:

首先,我认为这两个Web应用程序安全框架的方法和范围是不同的。在某些方面,它们也可以是可以一起使用的互补解决方案。

关于这种方法,HDIV尝试通过与Web框架集成来自动化安全最佳实践。为了实现这种方法,HDIV已集成在一些最常用的Java / JVM

Web框架中,例如:Spring MVC,Grails,JSF,Struts

1,Struts2。重要的是要注意,如果您的应用程序使用Web框架标签,要呈现链接和表单,HDIV不需要对源代码进行任何更改,只需声明性配置(基于XML或Java配置的配置)即可。

另一方面,ESAPI提供了开发人员必须在其源代码中使用的许多实用程序(API)。换句话说,程序员必须在其源代码中手动包括所有这些实用程序。ESAPI不依赖于Web框架,并且可以与任何Web应用程序一起使用,因为它未与Web框架集成。

关于范围,HDIV不涵盖ESAPI提供的某些功能,并且仅限于受支持的Web框架。重要的是要注意,Web框架(Struts,Spring

MVC等)或诸如Spring Security之类的解决方案已经涵盖了其中的某些功能:

  • 身份验证和会话管理:由应用服务器和Spring Security涵盖
  • 输出编码:由Web框架标签(在这种情况下为Spring MVC)覆盖,以避免XSS(转义功能)。其他类型的编码(如避免SQL注入的编码)未涵盖。
  • 加密功能:受Spring Security(http://docs.spring.io/spring-security/site/docs/3.1.7.RELEASE/reference/crypto.html)或ESAPI的保护。我没有比较这两个框架,但似乎它们是相似的。
  • 特定于参数的输入验证:涵盖所有Web框架(Struts,Spring MVC等)

HDIV被设计为Java EE,Spring Security和Web框架提供的安全功能的补充。

为了更深入地了解HDIV和ESAPI之间的区别,我将尝试比较两个框架在OWASP十大Web风险方面的功能。我已经在github(https://github.com/ESAPI)上包含了ESAPI

2.x和ESAPI 3.x中包含的功能。

A1注射:

  • HDIV:关于HTTP参数的值,URL和cookie,HDIV仅将来自表单内文本字段的数据的漏洞降低到此风险,对来自客户端的其余数据进行完整性验证(确保收到的值是与在服务器端生成的相同)。对于表单中包含的文本字段,HDIV提供了通用验证(白名单和黑名单),以避免注入攻击。
  • ESAPI:每个参数的手动输入验证。此功能很有用,但几乎所有Web框架都已提供。除此之外,SQL编码功能还可以在查询执行之前以编程方式对SQL进行编码。

A2身份验证和会话管理中断:

  • HDIV:不提供此网络风险的功能。我们建议使用Spring Security进行身份验证,并使用应用程序服务器功能(Servlet规范)进行会话管理。
  • ESAPI:提供必须由程序员以编程方式使用的实用程序。

A3-XSS:与A1相同,但在这种情况下,避免XSS风险。

  • HDIV:关于HTTP参数的值和URL HDIV降低了此漏洞的风险,使之仅适用于来自表单内文本字段的数据,并对来自客户端的其余数据进行完整性验证(确保接收的值相同)作为在服务器端生成的)。对于表单中包含的文本字段,HDIV提供了通用验证(白名单和黑名单),以避免注入攻击注入攻击。HDIV不包含任何输出编码功能,并将此职责委托给Web框架标签,在这种情况下为Spring MVC。
  • ESAPI:包括每个参数的手动输入验证。此功能很有用,但几乎所有Web框架都已提供。还提供用于输出编码的输出编码功能。程序员必须在源代码中使用此编码器。

A4-不安全的直接对象引用:

  • HDIV:控制在服务器端生成的所有数据(由框架标签处理),以确保数据的完整性并消除这种风险。在支持的Web框架内不需要任何源代码更改。请务必注意,HDIV支持不同的方法来管理所收集的信息:密码(状态以响应方式在响应中发送),内存(状态以HttpSession形式存储),哈希(状态的哈希值存储在HttpSession中)和网络响应中的内容)。
  • ESAPI:有必要创建一个映射以编程方式包含每个参数并将其存储在会话中。

    (http://www.jtmelton.com/2010/05/10/the-owasp-top-ten-and-esapi-

    part-5-insecure-direct-object-

    reference/)。该功能包含在ESAPI 2.x中,但是我没有在ESAPI

    3.x中找到。

A5-安全性配置错误:

  • HDIV:不包括该功能,但不允许访问服务器以前未发送的资源,从而避免利用意外行为或访问私有资源。
  • ESAPI:我没有发现任何功能,但我不是ESAPI的专家。

A6敏感数据暴露:

  • HDIV:提供机密性功能以隐藏HTTP参数的值。HDIV不提供任何加密API。
  • ESAPI:提供用于加密,解密等的加密API。更多详细信息,请访问:https://github.com/ESAPI/esapi-java-legacy/blob/master/documentation/esapi4java-core-2.0-crypto-design-goals .doc。此功能包含在ESAPI 2.x中,但是我没有在ESAPI 3.x中找到。

A7-缺少功能级别访问控制:

  • HDIV:由于HDIV实施了完整性验证,因此避免了这种Web风险的利用,并限制了服务器先前生成的URL的使用,并保持了应用程序提供的原始合同。
  • ESAPI:提供一个API以编程方式实现它。据我所知,它类似于Spring Security提供的功能,程序员必须在源代码中使用这些功能来保护每个URL。

A8跨站请求伪造(CSRF):

  • HDIV:由于HDIV与Web框架的表单标签集成,因此添加了临时令牌来避免每种表单的此漏洞。
  • ESAPI:提供用于生成令牌的API。程序员必须手动将此令牌添加到每个Web表单中。

A9-使用具有已知漏洞的组件:

  • HDIV:不包括特定功能,但是由于HDIV对用户施加的交互限制,在许多情况下无法利用已知漏洞。
  • ESAPI:我在文档中没有看到任何功能,但我不是ESAPI的专家。

A10-未经验证的重定向和转发:此漏洞主要与不可编辑数据或以前在服务器端生成的数据的操纵有关,并且与A4非常相似。

  • HDIV:控制服务器发送的所有数据,并且不允许重定向到恶意网站。
  • ESAPI:ESAPI提供的解决方案与必须在源代码中使用的A4(AccessReferenceMap)提供的解决方案相同。

Roberto Velasco Sarasola(HDIV团队)

以上是 HDIV和ESAPI之间的区别 的全部内容, 来源链接: utcz.com/qa/402556.html

回到顶部