İçeriğe geç

Dizin gezinme (ARCH6103)

Anahtar ruby.security.path-traversal · Önem error · Kategori security · CWE CWE-22

Dosya yolunu güvenilmeyen girdiden normalize etmeden ve sınırlamadan kurmak, saldırganın hedef dizinin dışına (../) çıkıp keyfi dosyalara erişmesine olanak tanır.

def read(name)
File.read(File.join("/var/data", name))
end
def read(name)
base = File.expand_path("/var/data")
path = File.expand_path(File.join(base, name))
raise "invalid path" unless path.start_with?("#{base}/")
File.read(path)
end

Yolu çözümleyip normalize edin ve sonucun izin verilen kök dizinin içinde kaldığını doğrulayın.