İçeriğe geç

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.

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);

Birleştirilmiş yolu Path.GetFullPath ile çözün ve sonucun izin verilen kök dizinin altında kaldığını doğrulayın.