expresión regular de c# - expresión regular para c# - expresión regular de c#

DoS de expresións regulares de C#: cando os patróns se converten en vectores de ataque

Cando as expresións regulares se volven en contra do rendemento  

Unha soa liña de expresión regular de C# pode levar unha API de produción ao límite. Os patróns mal escritos provocan retrocesos catastróficos, queimando ciclos de CPU e bloqueando fíos. Este é o clásico Denegación de servizo de expresión regular (ReDoS), un vector de ataque sutil pero perigoso agochado no teu código.

⚠️Exemplo inseguro, só con fins educativos. Non o use en produción.

Esta expresión regular para C# sofre de cuantificadores aniñados que provocan un retroceso exponencial. Unha cadea longa e maliciosa pode conxelar un punto final ou un microservizo.

Versión segura:

Nota educativa: Usar sempre tempos de espera (Opcións de expresión regular + Intervalo de tempo) e simplificar os grupos aniñados. En regex c#, a validación do rendemento é un requisito de seguranza, non unha optimización.

Por que os patróns de expresión regular de C# se volven vulnerables

Cuantificadores ambiguos (.*, .+ou (a+)+) e a repetición ilimitada converten as expresións regulares nun obxectivo común de denegación de servizo.
Cando estes aparecen en contextos impulsados ​​polo usuario, como a validación de entrada ou a análise de rexistros, unha única carga útil deseñada pode monopolizar a CPU.

⚠️Exemplo inseguro, só con fins educativos. Non o use en produción.

Versión segura:

Nota educativa: Evita a repetición ambigua, restrinxe o tamaño da entrada e compara sempre o rendemento das expresións regulares baixo carga. Fragmento funcional, aplicar tempos de espera e lonxitude máxima de entrada como gardas en produción.

Impacto real nas API e CI/CD Fluxos de traballo

As expresións regulares non seguras para C# non se limitan aos formularios de validación. Os desenvolvedores incrustan patróns en filtros de rexistro, coincidentes de webhooks e análises automatizadas. CI/CD, un patrón inseguro pode estancar todo pipeline.

⚠️Exemplo inseguro, só con fins educativos. Non o use en produción.

Nunca proceses expresións regulares proporcionadas polo usuario sen validación nin control de tempo límite.

Versión segura:

Nota educativa: Valida a entrada de expresións regulares externas antes da execución. Engade comprobacións de lonxitude explícitas e aplica tempos de espera en pipelines.

Prácticas seguras para evitar a denegación de servizo (DoS) de expresións regulares en C#

A prevención de ReDoS en regex c# debería estar integrada no teu desenvolvemento e Fluxo de traballo de DevSecOps. Aquí tes como facelo seguro por defecto:

Mellores Prácticas

  1. Definir sempre tempos de espera en todas as avaliacións de expresións regulares.
  2. Evitar patróns catastróficos, sen cuantificadores aniñados nin grupos ambiguos.
  3. Limitar o tamaño da entrada antes de pasar a regex.
  4. Precompilar patróns de confianza con OpciónsRegex.Compilado.
  5. Sanear as expresións proporcionadas polo usuario ou patróns permitidos na lista branca.

Mini lista de verificación preventiva

  • Revisa cada expresión regular para o uso de C# na túa base de código.
  • aplicar Intervalo de tempo tempos de espera de forma consistente.
  • Restrinxir as lonxitudes de entrada nas entradas da API e do CI.
  • Probar o rendemento das expresións regulares antes do lanzamento.
  • Automatizar expresións regulares estáticas dixitalización en CI/CD.

Nota educativa: Trata os patróns de expresión regular como código non fiable. Merecen o mesmo escrutinio que SQL ou a execución de comandos.

Como detecta Xygeni o uso arriscado de expresións regulares en C#

Xíxeno Code Security detecta automaticamente patróns de expresións regulares inseguras de C# durante a análise estática. Identifica retrocesos catastróficos, tempos de espera perdidos e patróns que probablemente colguen os servizos. In CI/CD, Xíxeno actúa como un Porta DevSecOps, bloqueando expresións regulares inseguras para C# antes de que se fusione ou despregue.

Nota educativa: A integración de Xygeni garante unha xestión segura das expresións regulares en compilacións e entornos, o que evita regresións e exposición a doS antes da implementación.

A túa expresión regular é potente, asegúrate de que non estea convertida en arma

As vulnerabilidades de ReDoS converten as expresións regulares de C# de aspecto inocente nunha arma de denegación de servizo. As expresións regulares inseguras para os patróns de C# son un descoido común, ata que conxelan a produción ou rompen. CI/CD.

Fai que a seguridade das expresións regulares forme parte da túa hixiene de programación:

  • Usa sempre tempos de espera.
  • Evita os cuantificadores aniñados.
  • Restrinxir a entrada do usuario.
  • Automatizar comprobacións usando Xygeni Code Security.

As expresións regulares sempre serán potentes, pero cun deseño coidadoso, os patróns de expresión regular de C# non se converterán no teu próximo informe de incidentes.

ferramentas-sca-tools-software-ferramentas-de-análise-de-composición
Priorizar, corrixir e protexer os riscos do software
Obtén a túa conta gratuíta.
Non se precisa tarxeta de crédito.

Asegura o desenvolvemento e a entrega do teu software

con Xygeni Product Suite