Permitimos algunos RE suministrados por el usuario con el fin de filtrar el correo electrónico. Al principio nos topamos con algunos problemas de rendimiento con RE que contenían, por ejemplo, .*
, al hacer coincidir contra correos electrónicos arbitrariamente grandes. Encontramos que una solución simple era s/\*/{0,1024}/
en el RE suministrado por el usuario. Sin embargo, esto no es una solución perfecta, ya que se romperá con el siguiente patrón:Cualquier forma de tratar. * Como. {0,1024} en perl RE?
/[*]/
Y en lugar de dar con alguna receta complicada para tener en cuenta todas las posibles mutaciones de entrada RE proporcionada por el usuario, que había Me gusta simplemente limitar la interpretación de Perl de los caracteres *
y +
para tener una longitud máxima de 1024 caracteres.
¿Hay alguna manera de hacer esto?
¿Qué parte de un correo electrónico tienen estos filtros se ejecutan en? Encabezados, cuerpo? – fge
@fge: el cuerpo es donde esto importa, porque esa es la parte que puede ser arbitrariamente grande. También verificamos los encabezados, pero solo un encabezado a la vez. E incluso los encabezados de correo electrónico más largos no son lo suficientemente largos como para causar problemas de rendimiento con * y +. – Flimzy
Bien, entonces otra pregunta: ¿ejecuta estas expresiones regulares en todo el contenido, los archivos adjuntos incluidos, o se salta los archivos adjuntos? – fge