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.
Hatalı
Bölüm başlığı “Hatalı”def valid?(input) pattern = /\A(\w+)+\z/ pattern.match?(input)enddef valid?(input) pattern = Regexp.new('\A(\w+)+\z', timeout: 1.0) pattern.match?(input)endDüzeltme
Bölüm başlığı “Düzeltme”Düzenli ifadeleri timeout: seçeneğiyle oluşturun veya girdi uzunluğunu sınırlayın.