Buenas,
yo no soy muy amigo de las expressiones regulares, seguramente es porque salvo las más simples, suelen ser un infierno de caractéres en una single line que pueden ahorrarte trabajo pero darte más de un dolor de cabeza. Además sumado a la cantidad de ejemplos que hay en internet de diferentes expresiones regulares para todo tipo de escenarios, pues la cosa puede ir muy mal casi sin darte cuenta.
¿Por qué puede ir mal?, pues porque por más que no lo parezca, para resolver una RegExp, hay que procesar la misma y este proceso, dependiendo del dato de entrada puede dar lugar a tiempos de proceso muy largos o inclisve memory leaks.
¿A qué ahora no te parece tan bonito eso de copiar de internet una línea y ponerla en tu código?
El artículo de la MSDN Magazine: “Regular Expression Denial of Service Attacks and Defenses” trata este tema y además nos muestra como la mala implementación de RegExp puede llevar a ataques DoS.
Además, a partir del resultado de una evaluación de una RegExp podemos crear un bug directamente en Team Foundation Server 2010. Esta herramienta es parte de SDL (Security Development Lifecycle) y si bien la integración con TFS es mínima, nos pemite crear Bugs en Team Foundation Server.
Por ejemplo si analizamos la RegExp “^(\d|\d?)+$”, con uno de los formularios más feos que he visto en mucho tiempo:
A partir de la misma podremos crear un Bug en nuestro Team Project
con los campos:
Title: Exponential execution time in regular expression pattern ^(\d|\d?)+$
Description: The regular expression pattern ^(\d|\d?)+$ can operate in a worst-case exponential execution time, potentially causing a denial of service to the application.
y dejarlo como un punto a solucionar sin que se nos escape ![]()
Asi que ya sabes, antes de utlizar una RegExp, darle un repaso con esta herramienta para analizar vulnerabilidades.
Saludos @ Here
El Bruno
Descarga: http://www.microsoft.com/download/en/details.aspx?id=20095
Referencia: http://msdn.microsoft.com/en-us/site/ff646973
Security Development LifeCycle: http://blogs.msdn.com/b/sdl/archive/2010/10/12/new-tool-sdl-regex-fuzzer.aspx


Leave a comment