在ESAPI验证程序中创建规则

时间:2014-01-05 19:09:25

标签: java validation esapi

我正在开始使用ESAPI,但我遇到了问题。我正在尝试创建一个示例规则(Validator.Single = [A-Z] $)。我验证String是否只有一个大写字符。

我在Validator.properties文件中放了Validator.Single = [A-Z] $,但是当我在代码中使用时:

System.out.println(v.isValidInput("Single", "A", "Single", 1, true));

输出告诉我

SecurityConfiguration for Validator.Single not found in ESAPI.properties. Using default: 
false

并且给我一个假的,反对一个真的,因为“A”是一个有效的字母。

任何人都知道我还有什么要做的?或者我的规则不好?

感谢您的回复。

3 个答案:

答案 0 :(得分:0)

您的Validator.Single=[A-Z]$

应该是

Validator.Single=^[A-Z]$

记下正则表达式开头的插入字符(^)。您可以在Lars'Java Regex Tutorial

中阅读有关Java正则表达式的更多信息

答案 1 :(得分:0)

这里的问题很可能与类路径有关。在运行调用ESAPI的进程时,您是告诉jvm您的属性文件所在的位置,还是您自己从源代码编译库?

我没有足够的关于你如何运行这行代码,但我怀疑你使用的esapi jar中有一个validation.properties文件,因此它没有找到你的那个想。

但是,您的进程已运行,请确保将以下属性传递给jvm:

-Dorg.owasp.esapi.resources="<path_to_your_resources_directory>"

或者,如果正在编译,请确保您正在更改src/main/resources

中的validation.properties

答案 2 :(得分:0)

如果您查看 org.owasp.esapi.reference.DefaultSecurityConfiguration#getValidationPattern,您会发现如果抛出 PatternSyntaxException,即使它在 "SecurityConfiguration for " + key + " not a valid regex in ESAPI.properties. Returning null" 中定义,日志也会显示 validation.properties

因此,在您修复正则表达式语法后,它应该可以正常工作。