Невозможно определить максимальную длину для типа ESAPI SafeString - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь использовать ESAPI в моем существующем проекте.Я получаю сообщение об ошибке при попытке использовать метод ESAPI.validator().getValidInput() для типа SafeString.

Ниже приводится автоматически определяемое регулярное выражение, содержащееся в файле validation.properties:

Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$

Iпредполагается, что максимальная длина равна 1024.

Это мой код:

ESAPI.validator().getValidInput("Validationofinput",_appendToSelect,"SafeString",1024, true)

Однако я получил следующую ошибку:

WARN IntrusionDetector - [SECURITYНЕИСПРАВНОСТЬ: анонимный: null @ unknown -> / ExampleApplication / IntrusionDetector] Недопустимый ввод: context = Validationofinput, тип (SafeString) = ^ [. \ P {Alnum} \ p {Space}] {0,1024} $, input = и ProductCategoryкак '% test_%' org.owasp.esapi.errors.ValidationException: Validationofinput: неверный ввод.Пожалуйста, укажите regex ^ [. \ P {Alnum} \ p {Space}] {0,1024} $ с максимальной длиной 1024 в org.owasp.esapi.reference.validation.StringValidationRule.checkWhitelist (StringValidationRule.java:144.reference.DefaultValidator.getValidInput (DefaultValidator.java:214) в org.owasp.esapi.reference.DefaultValidator.getValidInput (DefaultValidator.java:185)

Может кто-нибудь сказать мне, что я сделал не так?

1 Ответ

0 голосов
/ 02 ноября 2018

Хорошо,

Это сбой, потому что ваш ввод не соответствует регулярному выражению, а не из-за нарушения длины.

Стандарт Posix указывает, что \p{Alnum} соответствует регулярному выражению [a-zA-Z0-9], а \p{Space} соответствует \s. В вашем случае ваш ввод не удастся из-за символов: ' и % и _

^[.\\p{Alnum}\\p{Space}]{0,1024}$:

^ == В начале строки

[ == Начать класс символов, сопоставить любой из следующих символов в любом порядке

. == Соответствует периоду ASCII

\\p{Alnum} == Совпадает с любым символом или цифрой ASCII, прописными или строчными.

\\p{Space} == Соответствует любому пробелу ASCII

] == Завершить класс символов

{0,1024} == Соответствует любому количеству символов от 0 до 1024

$ == До конца строки.

...