Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ESAPI验证程序中创建规则_Java_Validation_Esapi - Fatal编程技术网

Java 在ESAPI验证程序中创建规则

Java 在ESAPI验证程序中创建规则,java,validation,esapi,Java,Validation,Esapi,我开始与ESAPI合作,但我有一个问题。我正在尝试创建一个示例规则(Validator.Single=[A-Z]$)。我验证字符串是否只有大写字符 我将Validator.Single=[A-Z]$放在Validator.properties文件中,但在代码中使用时: System.out.println(v.isValidInput("Single", "A", "Single", 1, true)); 输出告诉我 SecurityConfiguration for Validator.Si

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

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

System.out.println(v.isValidInput("Single", "A", "Single", 1, true));
输出告诉我

SecurityConfiguration for Validator.Single not found in ESAPI.properties. Using default: 
false
并返回一个false,一个true,因为“a”是一个有效的字母

有人知道我还需要做什么吗?还是我把规则弄坏了


感谢您的回复。

您的
验证器。Single=[A-Z]$

应该是

Validator.Single=^[A-Z]$

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

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

我对您如何运行这一行代码没有足够的了解,但我怀疑您正在使用的esapi jar中有一个
validation.properties
文件,因此它无法获取您想要的文件

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

-Dorg.owasp.esapi.resources=”“


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

中的validation.properties,如果查看
org.owasp.esapi.reference.DefaultSecurityConfiguration#getValidationPattern
,您可以看到如果抛出
PatternSyntaxException
,日志将显示
“SecurityConfiguration for”+key+“不是ESAPI.properties中的有效正则表达式。返回null“
,即使它是在
validation.properties
中定义的


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

请记住,在正则表达式语法中,
[A-Z]
几乎在所有实现中都只对ASCII大写字母起作用。UNICODE字符将直接跳过这一点。您可能需要使用
\p{Lu}
,或者,如果您在正则表达式前面加上
(U)前缀
这仍然是一个问题吗?这不会导致OP的问题。