Часто регулярные выражения приводят как пример идеального write-only кода. Сложно читать, сложно изменять, но хотя бы быстро работают. Или не всегда быстро?
В докладе я предлагаю посмотреть на регулярные выражения с точки зрения производительности. Разберу понятие backtracking’а, посмотрим, как разные библиотеки с ним справляются. Расскажу про свой PR в Pydantic, который закрыл, возможно, и вашу уязвимость.
Приведу рекомендации как для возможного обхода, так и для гарантированного решения подобных проблем.
Бенчмарки и примеры будут на Python, но основной материал релевантен без привязки к языку.
Будет полезно всем, кто уже использовал регулярки на проде, но ещё не пробовал реализовать свой RegExp движок.