Когда регулярные выражения мешают производительности
Одна строка регулярного выражения на C# может поставить на колени весь API в рабочем состоянии. Плохо написанные шаблоны приводят к катастрофическим возвратам, сжиганию ресурсов процессора и блокировке потоков. Это классический пример. Отказ в обслуживании с помощью регулярных выражений (ReDoS) — тонкий, но опасный вектор атаки, скрытый в вашем коде.
⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.
Это регулярное выражение для C# страдает от вложенных квантификаторов, которые приводят к экспоненциальному возврату. Длинная вредоносная строка может привести к заморозке конечной точки или микросервиса.
Защищенная версия:
Образовательная заметка: Всегда используйте тайм-ауты (RegexOptions + Промежуток времени) и упростить вложенные группы. В регулярных выражениях C# проверка производительности — это требование безопасности, а не оптимизация.
Почему шаблоны регулярных выражений C# становятся уязвимыми
Неоднозначные квантификаторы (.*, .+ или (а+)+) и неограниченное повторение делают регулярные выражения частой целью DoS-атак.
Когда они появляются в пользовательских контекстах, таких как проверка входных данных или анализ журнала, одна специально созданная полезная нагрузка может монополизировать ресурсы ЦП.
⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.
Защищенная версия:
Образовательная заметка: Избегайте неоднозначного повторения, ограничивайте размер входных данных и всегда проверяйте производительность регулярных выражений под нагрузкой. Функциональный фрагмент, обеспечивает соблюдение тайм-аутов и максимальной длины входных данных в качестве защитных мер в процессе производства.
Реальное влияние на API и CI/CD Рабочие процессы
Небезопасные регулярные выражения для C# не ограничиваются формами валидации. Разработчики встраивают шаблоны в фильтры журналов, сопоставления веб-хуков и автоматизированные сканирования. CI/CD, один небезопасный шаблон может остановить весь pipeline.
⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.
Никогда не обрабатывайте предоставленные пользователем регулярные выражения без проверки или контроля времени ожидания.
Защищенная версия:
Образовательная заметка: Проверьте входные данные внешнего регулярного выражения перед выполнением. Добавьте явные проверки длины и используйте тайм-ауты. pipelines.
Безопасные методы предотвращения DoS-атак на регулярные выражения в C#
Предотвращение ReDoS-атак в регулярных выражениях C# должно быть интегрировано в вашу разработку и Рабочий процесс DevSecOps. Вот как сделать его безопасным по умолчанию:
Лучшие практики
- Всегда устанавливайте тайм-ауты при всех оценках регулярных выражений.
- Избегайте катастрофических моделей, нет вложенных квантификаторов или неоднозначных групп.
- Ограничить размер входных данных перед переходом к регулярному выражению.
- Предварительная компиляция доверенных шаблонов с RegexOptions.Compiled.
- Очистка пользовательских выражений или белый список разрешенных шаблонов.
Мини-профилактический контрольный список
- Проверьте все регулярные выражения на предмет использования C# в вашей кодовой базе.
- Применить Промежуток времени постоянные тайм-ауты.
- Ограничьте длину входных данных API и CI.
- Проверьте производительность регулярных выражений перед выпуском.
- Автоматизировать статические регулярные выражения сканирование в CI/CD.
Образовательная заметка: Относитесь к шаблонам регулярных выражений как к ненадёжному коду. Они заслуживают такого же пристального внимания, как и выполнение SQL или команд.
Как Xygeni обнаруживает рискованное использование регулярных выражений в C#
Ксигени Code Security автоматически обнаруживает небезопасные шаблоны регулярных выражений C# во время статического анализа. Он выявляет катастрофические возвраты, пропуски тайм-аутов и закономерности, которые могут привести к зависанию сервисов. In CI/CD, Ксигени действует как ворота DevSecOps, блокируя небезопасные регулярные выражения для C# перед их слиянием или развертыванием.
Образовательная заметка: Интеграция Xygeni обеспечивает безопасную обработку регулярных выражений в сборках и средах, предотвращая регрессии и риск DoS-атак до развертывания.
Ваше регулярное выражение мощное, убедитесь, что оно не превращено в оружие
Уязвимости ReDoS превращают невинное на вид регулярное выражение C# в оружие отказа в обслуживании. Небезопасные регулярные выражения для шаблонов C# являются распространенной ошибкой, пока они не заморозят производство или не сломаются CI/CD.
Сделайте безопасность регулярных выражений частью гигиены вашего кодирования:
- Всегда используйте тайм-ауты.
- Избегайте вложенных квантификаторов.
- Ограничить ввод данных пользователем.
- Автоматизируйте проверки с помощью Xygeni Code Security.
Регулярные выражения всегда будут мощным инструментом, но при тщательном проектировании ваши шаблоны регулярных выражений на C# не станут очередным отчетом об инциденте.





