Недавно я узнал об атаках "Регулярное выражение" Отказ в обслуживании " и решил исправить так называемые" злые "шаблоны регулярных выражений, где бы я мог их найти в моей кодовой базе - или, по крайней мере, те, которые используются при вводе пользователя. Примеры, приведенные в ссылке OWASP выше и wikipedia, полезны, но они не делают отличная работа по простому объяснению проблемы.
Описание злых регулярных выражений, wikipedia:
- регулярное выражение применяет повторение ( "+", "*" ) к сложному подвыражению;
- для повторного подвыражения, существует соответствие, которое также является суффиксом другого допустимого соответствия.
С примерами снова из wikipedia:
-
(a+)+
-
([a-zA-Z]+)*
-
(a|aa)+
-
(a|a?)+
-
(.*a){x}
для x > 10
Это проблема, которая просто не имеет более простого объяснения? Я ищу что-то, что облегчило бы избежать этой проблемы при написании регулярных выражений или найти их в существующей кодовой базе.