İçeriğe geç

Düzenli ifade DoS (ARCH7135)

Anahtar php.security.regex-dos · Önem warning · Kategori security · CWE CWE-1333

İç içe niceleyiciler içeren düzenli ifadeler (örn. (a+)+) belirli girdilerde üstel geri izlemeye yol açar. Güvenilmeyen girdiye uygulandığında saldırgan tek bir istekle CPU’yu kilitleyebilir (ReDoS). Desen yeniden yazılmalı veya girdi sınırlanmalıdır.

<?php
$input = $_GET['q'];
if (preg_match('/^(\w+\s?)+$/', $input)) {
// ...
}
<?php
$input = $_GET['q'];
if (strlen($input) > 256) {
http_response_code(400);
exit;
}
if (preg_match('/^\w+(\s\w+)*$/', $input)) {
// ...
}

İç içe niceleyicileri kaldıracak şekilde deseni yeniden yazın ve girdi uzunluğunu sınırlayın.