¿Hay una manera fácil de saber si un regex es "malo"?

1

Estaba leyendo este artículo (sobre ReDos). Los ejemplos que dan son bastante simples, pero estoy seguro de que tales expresiones regulares pueden ocultarse en todas partes. Si hubiera alguna forma de probar si una expresión regular es mala sin pasar mucho tiempo tratando de encontrar la NFA utilizada por el motor de expresiones regulares, me encantaría saberlo.

Muchas gracias.

    
pregunta DARK_DUCK 18.08.2015 - 09:18
fuente

1 respuesta

2

La respuesta es que no sabes. Este es el clásico problema de detención .

Básicamente, usted no debe permitir que los usuarios establezcan sus propias expresiones regulares siempre que sea posible. Si les permite establecer su propia expresión regular, entonces podría mitigarla de otras formas, como solo permitiéndole establecer expresiones regulares cuando afecte a su propio servicio, o configurando los tiempos de espera de ejecución. Posiblemente podría marcar expresiones regulares de larga duración para que sepa si alguno de sus usuarios está intentando realizar una ReDos.

    
respondido por el SilverlightFox 19.08.2015 - 11:26
fuente

Lea otras preguntas en las etiquetas