İçeriğe geç

Regex Zaman Aşımı (ARCH6074)

Anahtar ruby.performance.regex-timeout · Önem warning · Kategori performance

Güvenilmeyen girdiyle eşleştirilen bir regex’in zaman aşımı yoksa, kötü niyetli girdi katastrofik geri izlemeyle (ReDoS) işlemciyi kilitleyebilir. Desene bir zaman aşımı tanımlayın.

def valid?(input)
pattern = /\A(\w+)+\z/
pattern.match?(input)
end
def valid?(input)
pattern = Regexp.new('\A(\w+)+\z', timeout: 1.0)
pattern.match?(input)
end

Düzenli ifadeleri timeout: seçeneğiyle oluşturun veya girdi uzunluğunu sınırlayın.