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.
Hatalı
Bölüm başlığı “Hatalı”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();}Düzeltme
Bölüm başlığı “Düzeltme”Girdi uzunluğunu sınırlayın ve mümkünse geri izlemesiz bir desen kullanın.