Bunlar, bir metni bir kalıpla eşleştirmeye çalışmak için harcanan maksimum bellek / süreyi sınırlamak amacıyla PCRE motorunun dahili ayarları gibi görünmektedir. pcreapi
Manpage anlayabileceği şekilde açıklamak biraz yapar:
Match_limit alanı, eşleşmeyecek, ancak arama ağaçlarında çok fazla olasılığı olan kalıpları çalıştırırken PCRE'nin çok miktarda kaynak kullanmasını önlemenin bir yolunu sunar. Klasik örnek, iç içe sınırsız tekrarların kullanılmasıdır.
Dahili olarak, PCRE, tekrar tekrar (bazen yinelemeli olarak) çağırdığı match () adlı bir işlevi kullanır. Match_limit tarafından ayarlanan sınır, bir maç sırasında bu fonksiyonun kaç kez çağrıldığına uygulanır; bu, gerçekleşebilecek geri izleme miktarını sınırlama etkisine sahiptir. Bağlantılı olmayan kalıplar için sayı, konu dizesindeki her konum için sıfırdan yeniden başlar.
Sınır için varsayılan değer PCRE oluşturulduğunda ayarlanabilir; varsayılan varsayılan 10 milyon'dur ve en uç durumlar hariç hepsini işler. Pcre_exec () öğesini match_limit öğesinin ayarlandığı bir pcre_extra bloğuyla ve bayraklar alanında PCRE_EXTRA_MATCH_LIMIT ayarlanmış olarak varsayılanı geçersiz kılabilirsiniz. Sınır aşılırsa pcre_exec (), PCRE_ERROR_MATCHLIMIT değerini döndürür.
Match_limit_recursion alanı match_limit alanına benzer, ancak match () öğesinin çağrılma sayısını sınırlamak yerine özyineleme derinliğini sınırlar. Yineleme derinliği, toplam çağrı sayısından daha küçük bir sayıdır, çünkü match () öğelerinin tümü yinelemeli değildir. Bu sınır yalnızca match_limit değerinden daha küçük olarak ayarlandığında kullanılır.
PCRE kitaplığı yerleşik varsayılan 10000000 olduğundan, tahminim uzun bir süre bekletilmesini önlemek için mod_security için daha düşük ayarın önerilmesidir.