Создать правило в валидаторе ESAPI
Я начинаю работу с 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
И возвращает мне ложь, против истины, потому что буква "А" является действительной буквой.
Кто-нибудь знает, что еще мне нужно сделать? Или я делаю правило плохим?
Спасибо за ваши ответы.
3 ответа
Ваш Validator.Single=[A-Z]$
должно было
Validator.Single=^[A-Z]$
Обратите внимание на символ вставки (^) в начале регулярного выражения. Вы можете прочитать больше о Регулярных выражениях Java в Lars ' Java Regex Tutorial
Проблема здесь, скорее всего, связана с classpath. При запуске процесса, который вызывает ESAPI, вы сообщаете jvm, где находится ваш файл свойств, или вы сами компилируете библиотеку из исходного кода?
Мне не хватает того, как вы запускаете эту строку кода, но я подозреваю, что есть validation.properties
файл в банке esapi, которую вы используете, и поэтому он не забирает тот, который вы хотите.
Однако ваш процесс запущен, убедитесь, что следующее свойство передается в jvm:
-Dorg.owasp.esapi.resources="<path_to_your_resources_directory>"
Или при компиляции убедитесь, что вы меняете validation.properties в src/main/resources
Если вы посмотрите на
org.owasp.esapi.reference.DefaultSecurityConfiguration#getValidationPattern
, вы можете видеть, что если
PatternSyntaxException
журнал сказал бы
"SecurityConfiguration for " + key + " not a valid regex in ESAPI.properties. Returning null"
хотя это определено в
validation.properties
.
Поэтому он должен работать правильно после того, как вы исправите синтаксис регулярного выражения.