1

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

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

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

输出告诉我

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

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

有谁知道我还需要做什么?还是我让规则变坏了?

感谢您的回复。

4

3 回答 3

1

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

本来应该

Validator.Single=^[A-Z]$

请注意正则表达式开头的插入字符(^)。您可以在 Lars 的Java 正则表达式教程中阅读有关 Java 正则表达式的更多信息

于 2014-01-20T13:45:36.913 回答
0

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

我对你如何运行那行代码没有足够的了解,但我怀疑validation.properties你正在使用的 esapi jar 中有一个文件,因此它没有选择你想要的那个。

无论您的进程如何运行,请确保将以下属性传递给 jvm:

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

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

于 2014-10-17T12:08:56.687 回答
0

如果您查看org.owasp.esapi.reference.DefaultSecurityConfiguration#getValidationPattern,您可以看到如果PatternSyntaxException被抛出,日志会说"SecurityConfiguration for " + key + " not a valid regex in ESAPI.properties. Returning null"即使它是在 中定义的validation.properties

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

于 2021-01-15T15:35:03.980 回答