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

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

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

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

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

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

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

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

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