Я использую встроенный валидатор esapi. Он определяется следующим образом:
Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
Я не очень хорошо знаком с регулярным выражением, и после некоторого чтения я понимаю, что это выражение соответствует буквенно-цифровым и пробелам.
Я хотел бы распространить это выражение на include *, -() & + и /. Я попытался сделать следующее, но он, похоже, не работает
Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,-()&+]{0,1024}$
Я бы создал отдельную запись в validation.properties, намерение OWASP для SafeString
- обеспечить гарантированную безопасную строку для любого приложения. Принимая символы, которые могут быть интерпретированы как код в Javascript, у вас больше нет SafeString
как предполагалось в API. Это может иметь катастрофические последствия, если другие части вашего приложения используют SafeString
как первоначально предполагалось.
Используйте первое регулярное выражение @Fede, но обращайтесь к нему следующим образом:
Validator.SomethingElse=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$
И назовите это так:
ESAPI.validator().isValidInput(CONTEXT, input, "SomethingElse", MAX_FIELD_LENGTH, true);
Обратите внимание, что знак "истина" соответствует тому, является ли строка null
.
Вы должны положить дефис в конце, поскольку, если вы этого не сделаете, дефис работает как диапазон, а не один символ:
Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$
^--- here
Обновление: после комментариев avgvstvs:
От 1.7 до более поздней версии вам нужно будет добавить флаг (? U) в начало вашего регулярного выражения, чтобы \w\s работал.
Вы также можете попробовать:
Validator.SafeString=(?u)^[.\\w\\s*,()&+-]{0,1024}$
\\w
и \\s
определены только в ASCII, заданном по умолчанию. До Java 1.7 единственным решением было то, что сделал OWASP, \\p{Alnum}\\p{Space}
потому что они были определены во всем диапазоне кодовых точек UTF-8. С версии 1.7 и позже вам нужно будет добавить флаг (?u)
в начало вашего регулярного выражения, чтобы \\w\\s
работал. Для ясности и ясности я бы предложил использовать версию регулярного выражения OWASP.