Как избежать регулярной катастрофы?
Учимся на чужих ошибках
Тезисы
Часто регулярные выражения приводят как пример идеального write-only кода. Сложно читать, сложно изменять, но хотя бы быстро работают. Или не всегда быстро?

В докладе я предлагаю посмотреть на регулярные выражения с точки зрения производительности. Разберу понятие backtracking’а, посмотрим, как разные библиотеки с ним справляются. Расскажу про свой PR в Pydantic, который закрыл, возможно, и вашу уязвимость.

Приведу рекомендации как для возможного обхода, так и для гарантированного решения подобных проблем.

Бенчмарки и примеры будут на Python, но основной материал релевантен без привязки к языку.

Будет полезно всем, кто уже использовал регулярки на проде, но ещё не пробовал реализовать свой RegExp движок.
Часто регулярные выражения приводят как пример идеального write-only кода. Сложно читать, сложно изменять, но хотя бы быстро работают. Или не всегда быстро?

В докладе я предлагаю посмотреть на регулярные выражения с точки зрения производительности. Разберу понятие backtracking’а, посмотрим, как разные библиотеки с ним справляются. Расскажу про свой PR в Pydantic, который закрыл, возможно, и вашу уязвимость.

Приведу рекомендации как для возможного обхода, так и для гарантированного решения подобных проблем.

Бенчмарки и примеры будут на Python, но основной материал релевантен без привязки к языку.

Будет полезно всем, кто уже использовал регулярки на проде, но ещё не пробовал реализовать свой RegExp движок.
Видеозапись доклада
Появится здесь после конференции
Информация о спикере
Алексей Лобанов
TechLead, SberDevices
  • Алексей Лобанов
    TechLead, SberDevices
Все доклады секции