我查看了用于输入验证的各种框架,包括用于 JSR 303 bean 验证的Hibernate Validator impl,以及ESAPI验证器接口及其DefaultValidator实现。
ESAPI 输入验证通过 ESAPI.properties 文件围绕正则表达式模式匹配展开。
ESAPI 路线:
ESAPI.properties:
Validator.SafeString=[A-Za-z0-9]{0,1024}$
Java类:
ESAPI.validator().isValidInput("Name","darthvader", "SafeString", 255, false)
Hibernate Validator/Spring MVC 路由
Hibernate 涉及使用各种约束注释(@NotNull、@Size、@Min、@Pattern、@Valid 等)来注释您的 bean。并为验证规则集成 Spring MVC。
@RequestMapping(value = "/appointments", method = RequestMethod.POST)
public String add(@Valid User user, BindingResult result) {
....
}
似乎使用 Hibernate Validator/Spring MVC 提供了与正则表达式匹配等类似的功能。与Hibernate 验证器 api 相比,使用 ESAPI 库有什么优势吗?也许用于 SQL 注入/XSS 或任何类似性质的东西?为 ESAPI 输入验证框架提供开箱即用的 XSS/SQL 注入安全性?与使用其中一个或另一个相比的任何真正优势。提前致谢。
回答我自己的问题: 我想我为这篇文章找到了自己的解决方案。使用 Hibernate/Spring MVC 可以实现非常强大的 bean 验证功能。而Hibernate提供了@SafeHtml、@Pattern等安全注解。基本上我们可以设置一组提供bean验证的组合注解。http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/