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