İçeriğe geç

Regex zaman aşımı koruması yok (ARCH7074)

Anahtar php.performance.regex-timeout · Önem info · Kategori performance

Güvenilmeyen girdiyi sınırsız bir regex ile eşleştirmek, patolojik desenlerde aşırı geri izleme (ReDoS) ile CPU’yu kilitleyebilir. PCRE geri izleme sınırını ayarlayın veya girdi uzunluğunu sınırlayın.

<?php
function matches(string $input): bool
{
return (bool) preg_match('/^(\w+)+$/', $input);
}
<?php
function matches(string $input): bool
{
if (strlen($input) > 256) {
return false;
}
ini_set('pcre.backtrack_limit', '100000');
return (bool) preg_match('/^\w+$/', $input);
}

Girdi uzunluğunu sınırlayın ve pcre.backtrack_limit ile geri izlemeyi sınırlandırarak ReDoS’u önleyin.