Path traversal (ARCH303)
Anahtar dotnet.security.path-traversal · Önem error · Kategori security · CWE CWE-22
Kullanıcı tarafından sağlanan bir dosya adının doğrudan yola eklenmesi, ../ dizileriyle hedef dizin dışına çıkılmasına izin verir. Yol normalize edilip kök dizine kısıtlanmalıdır.
Hatalı
Bölüm başlığı “Hatalı”var path = Path.Combine(uploadDir, userFileName);var bytes = File.ReadAllBytes(path);var fullRoot = Path.GetFullPath(uploadDir);var path = Path.GetFullPath(Path.Combine(fullRoot, userFileName));if (!path.StartsWith(fullRoot + Path.DirectorySeparatorChar)) throw new UnauthorizedAccessException();var bytes = File.ReadAllBytes(path);Düzeltme
Bölüm başlığı “Düzeltme”Birleştirilmiş yolu Path.GetFullPath ile çözün ve sonucun izin verilen kök dizinin altında kaldığını doğrulayın.