İçeriğe geç

Regex zaman aşımı (ARCH4074)

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

Güvenilmeyen girdiyi bir uzunluk sınırı veya zaman koruması olmadan eşleştirmek ReDoS’a açık kalır. Kötü amaçlı bir girdi, geri izlemeli (backtracking) regex’i saniyelerce CPU harcamaya zorlayabilir.

public boolean valid(String input) {
return input.matches("(a+)+$");
}
private static final Pattern P = Pattern.compile("(a+)+$");
public boolean valid(String input) {
if (input.length() > 256) return false;
return P.matcher(input).matches();
}

Girdi uzunluğunu sınırlayın ve mümkünse geri izlemesiz bir desen kullanın.