我计划使用 Spring MVC 开发一个 Web 应用程序,并试图找出哪个是用于解决 OWASP 前 10 名问题的最佳库。我来看看两个HDIV和ESAPI,谁能帮我理解它们之间的区别。
谢谢您的帮助。
我计划使用 Spring MVC 开发一个 Web 应用程序,并试图找出哪个是用于解决 OWASP 前 10 名问题的最佳库。我来看看两个HDIV和ESAPI,谁能帮我理解它们之间的区别。
谢谢您的帮助。
首先,我认为这两个 Web 应用程序安全框架的方法和范围是不同的。在某些方面,它们也可以是可以一起使用的补充解决方案。
关于该方法,HDIV 尝试通过与 Web 框架的集成来自动化安全最佳实践。为了实现这种方法,HDIV 已集成到一些最常用的 Java/JVM Web 框架中,例如:Spring MVC、Grails、JSF、Struts 1、Struts 2。请务必注意,如果您的应用程序使用 Web 框架标签要呈现链接和表单,HDIV 不需要在源代码中进行任何更改,只需一个声明性配置(基于 XML 或 Java 配置的配置)。
另一方面,ESAPI 提供了许多开发人员必须在其源代码中使用的实用程序 (API)。换句话说,程序员必须在其源代码中手动包含所有这些实用程序。ESAPI 不依赖于 Web 框架,并且可以在任何 Web 应用程序中使用,因为它没有与 Web 框架集成。
关于范围,HDIV 不涵盖 ESAPI 提供的某些功能,也仅限于支持的 Web 框架。需要注意的是,其中一些特性已经被 Web 框架(Struts、Spring MVC 等)或 Spring Security 等解决方案所覆盖:
HDIV 被设计为对 Java EE、Spring Security 和 Web 框架提供的安全功能的补充。
为了更深入地了解 HDIV 和 ESAPI 之间的区别,我将尝试比较这两个框架的 OWASP 十大网络风险的功能。我在 github ( https://github.com/ESAPI )中包含了 ESAPI 2.x 和 ESAPI 3.x 中包含的功能。
A1- 注射:
A2-Broken 身份验证和会话管理:
A3-XSS:与 A1 相同,但在这种情况下避免 XSS 风险。
A4-不安全的直接对象引用:
A5-安全配置错误:
A6-敏感数据暴露:
A7-缺少功能级别访问控制:
A8-跨站请求伪造(CSRF):
A9-使用已知漏洞的组件:
A10-Unvalidated redirects and forwards:该漏洞主要与服务器端不可编辑数据或先前生成的数据的操作有关,与A4非常相似。
罗伯托·贝拉斯科·萨拉索拉(HDIV 团队)
首先,OWASP 的 ESAPI 不再是 OWASP 的旗舰产品:该库的主要开发工作停滞不前,而 2.1 版本只是为了修复一个主要的 CVE。看起来定期的贡献会进入 HDIV 库。HDIV 也有丰富的资源演示如何将其集成到常见的 Web 框架中——他们的文档涵盖 Spring、Grails,当然它从 Struts1 和 Struts2 开始。
HDIV 提供了一个关于其架构的简报。虽然我真的不喜欢它说它消除了XSS(它没有,也不能),但基本架构看起来相当不错。
恕我直言,在搜索文档时 HDIV 似乎唯一缺少的是一种规范化作为入侵检测的方法。从理论上讲,由于它依赖于对不可编辑数据采取的散列,因此您会收到有人试图篡改您的参数的警告。但是,使用 esapi,它会检测多重编码攻击并相应地通知您——它会为您提供更好的信息。(参数名称、用户 ID 和尝试的输入。)
此外,HDIV 似乎没有 ESAPI 提供的几个功能:
validation.properties
.