11 votos

¿Qué son los PCRE limita?

En ModSecurity hay PCRE limits exceeded errores.

Sé que me puede solucionar este problema mediante el establecimiento de reglas tales como:

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Pero, ¿cuáles son estas reglas haciendo en realidad? ¿Qué hace el PCRE el límite de recursión conjunto de 150.000 decir? Lo de los agujeros de seguridad estoy permitiendo a través de la configuración de estos tan alto? ¿Qué hace el recursion y limit significa?

Sé que hay documentación, pero la documentación en realidad no me digas lo que está pasando, simplemente me dice cómo trabajar con las directivas.

13voto

DerfK Puntos 13616

Estos parecen ser los ajustes internos a la PCRE motor con el fin de limitar la cantidad máxima de memoria/tiempo invertido en tratar de coincidir con algunas de texto a un patrón. El pcreapi manual hace poco para explicarlo en términos sencillos:

El match_limit campo proporciona un medio de prevención de la PCRE de uso una gran cantidad de recursos cuando se ejecuta patrones que no se va a partido, pero que tienen un gran número de posibilidades en su la búsqueda de los árboles. El ejemplo clásico es el uso de anidado ilimitado las repeticiones.

Internamente, PCRE utiliza una función llamada match() que se las llamadas repetidas veces (a veces de forma recursiva). El límite establecido por match_limit se impone sobre el número de veces que se llama a esta función durante un partido, el cual tiene el efecto de limitar la cantidad de reproducciones que puede tener lugar. Para los patrones que no están ancladas, el conde se reinicia desde cero para cada posición en la cadena de tema.

El el valor predeterminado para el límite se puede ajustar cuando PCRE es construido; el valor predeterminado por defecto es de 10 millones, el cual se encarga de todos, pero la mayoría de los casos extremos. Puede reemplazar la configuración predeterminada por abastecer de pcre_exec() con un pcre_extra bloque en el que match_limit se establece, y PCRE_EXTRA_MATCH_LIMIT se establece en el campo indicadores. Si se supera el límite, pcre_exec() devuelve PCRE_ERROR_MATCHLIMIT.

El match_limit_recursion campo es similar a la match_limit, pero en lugar de limitar el número total de veces que match() es llamado, que limita la profundidad de la recursión. La recursividad la profundidad es un número menor que el número total de llamadas, porque no todas las llamadas a coincidir() son recursivos. Este límite es de uso sólo si es conjunto más pequeño que match_limit.

Desde la biblioteca PCRE incorporados por defecto es 10000000, mi conjetura es que el valor más bajo es sugerido para mod_security con el fin de impedir que las solicitudes que se celebra por un largo tiempo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: