Editar: tchrist me ha informado que mis acusaciones originales sobre la inseguridad de Perl son infundadas. Sin embargo, la pregunta sigue en pie.¿En qué idiomas es un agujero de seguridad utilizar la expresión regular proporcionada por el usuario?
Sé que en Perl, puede incrustar código arbitrario en una expresión regular, por lo que aceptar obviamente una expresión regular proporcionada por el usuario y su coincidencia permite la ejecución de código arbitrario y es un claro agujero de seguridad.
¿Pero esto es cierto para todos los idiomas que usan expresiones regulares? ¿Es cierto para todos los idiomas que usan expresiones regulares "compatibles con Perl"? ¿En qué idiomas son confiables las expresiones regulares proporcionadas por el usuario y en qué idiomas permiten la ejecución de código arbitrario u otros agujeros de seguridad?
Sospecho que la respuesta más práctica va a ser "No hagas eso." –
Estoy bastante seguro de que podría usarse como un ataque DoS en la mayoría de los idiomas, recuerdo haber leído algo acerca de cómo los anidados * pueden hacer que la expresión corresponda REALMENTE lenta – Bwmat
"Expresiones regulares compatibles con Perl" es una especie de frase extraña. Dado que Perl puede integrarse en ellos, en realidad no son expresiones regulares (creo que los documentos de Perl los llaman "patrones" o "equivalentes" o algo así), y para ser realmente compatible necesita todo Perl. :-) – Ken