Как я могу распознать злое регулярное выражение?

Я недавно узнал оРегулярное выражение Отказ в обслуживании атак и решил искоренить так называемые «злые» шаблоны регулярных выражений, где бы я ни находил их в своей кодовой базе - или, по крайней мере, те, которые используются при вводе пользователем. Примеры, приведенные наOWASP ссылка выше ивикипедия полезны, но они не очень хорошо объясняют проблему простыми словами.

Описание злых регулярных выражений, извикипедия:

регулярное выражение применяет повторение ("+", "*") к сложному подвыражению;для повторного подвыражения существует совпадение, которое также является суффиксом другого действительного совпадения.

С примерами, снова извикипедия:

(a+)+([a-zA-Z]+)*(a|aa)+(a|a?)+(.*a){x} для х> 10

Это проблема, которая не имеет более простого объяснения? Я ищу что-то, что помогло бы избежать этой проблемы при написании регулярных выражений или найти их в существующей кодовой базе.

Ответы на вопрос(8)

Ваш ответ на вопрос