ReparsePointAware Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Etkileşime alınan dosya ve klasörlerin yollarında Windows yeniden ayrıştırma noktası olmamasını ve koddaki yolların diskteki gerçek yollarla eşleşmesini sağlayan Dosya ve Dizin yardımcı program işlevlerinin koleksiyonu.
Yeniden ayrıştırma noktası ekleme, güvenlik açıklarının bilinen/yaygın bir vektördür. Bunlar hakkında daha fazla genel bilgi için buraya bakın: https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points
Bu işlev kümesinin amacı bir Windows dosya tanıtıcısı almak, beklenen yolda olduğunu doğrulamak ve ardından tüm dosya işlemlerini aynı tanıtıcıyla yapmaktır. Dosyayı doğrulamak ve dosya yolunu kullanarak herhangi bir ek işlem gerçekleştirmek güvenli bir düzen DEĞİlDİR. Saldırgan, dosya yolunu temel alarak dosyanın denetimiyle dosya işlemi arasındaki yarıştan yararlanabilir. Bu saldırı sınıfı, Denetim Zamanı/Kullanım Zamanı (TOCTOU) olarak bilinir. Bunu önlemek için, bu sınıf dosya tanıtıcısını tutar ve doğru konumda olduğu kabul edildikten sonra tanıtıcı üzerinde tüm işlemleri gerçekleştirir. Tüm işlemler dosya tanıtıcısını temel alarak gerçekleştirildiğinden doğru olduğunu doğruladığımız dosyayı değiştirdiğimizden haberdarız.
public static class ReparsePointAware
type ReparsePointAware = class
Public Class ReparsePointAware
- Devralma
-
ReparsePointAware
Yöntemler
| CreateDirectory(String) |
Belirtilen yolda tüm dizinleri ve alt dizinleri oluşturur. Dizinin kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur. |
| CreateText(String) |
UTF-8 ile kodlanmış metin yazmak için bir dosya oluşturur veya açar. Varolan bir dosya açılıyorsa, dosya kesilir. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur ve hiçbir şey yazılmaz. |
| DeleteFile(String) |
Belirtilen dosyayı siler. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur ve hiçbir şey silinmez. |
| GetFinalPath(SafeFileHandle) |
Her yeniden ayrıştırma noktası genişletilmiş olarak belirli bir SafeFileHandle için tam kurallı yolu alın. |
| HasReparsePoints(SafeFileHandle, String) |
SafeFileHandle tarafından temsil edilen dosya sistemi nesnesinin verilen expectedPath ile eşleşen kurallı bir yola sahip olup olmadığını denetler. |
| MoveFile(String, String) |
Belirtilen dosyayı yeni bir konuma taşır ve yeni bir dosya adı belirtme seçeneği sağlar. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur. |
| OpenFile(String, FileMode, FileAccess, FileShare) |
Belirtilen yolda, okuma, yazma veya okuma/yazma erişimiyle belirtilen moda ve belirtilen paylaşım seçeneğine sahip bir System.IO.FileStream açar. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur. OpenFile, herhangi bir dosya işlemi yapmadan önce dizini sabitler. Dizini sabitleme başarısız olursa veya dizin bir ReparsePoint ise, UnauthorizedAccessException oluşturulur. |
| OpenRead(String) |
Var olan bir dosyayı okumak üzere açar. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur. |
| OpenWrite(String) |
Var olan bir dosyayı açar veya yazmak için yeni bir dosya oluşturur. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur. |
| PinAndRequireNoReparsePoints(String, Boolean) |
Var olan bir dosya veya dizine bir SafeFileHandle açar ve sonuçta elde edilen kurallı yolun verilen yolunkiyle eşleşip eşleşmediğini onaylar. Sonuçta elde edilen SafeFileHandle IDisposable'dır ve sonraki dosya işlemlerinin yeniden ayrıştırma noktaları olmadan yollara yazıldığından emin olmak için using deyimleri içinde kullanılabilir. |
| PinHandle(String, Boolean) |
Taşınamadığını güvence altına almak için var olan bir dosya veya dizinde bir tanıtıcı alır. |
| RequireNoReparsePoints(String, Boolean) |
Kurallı yol expectedPath ile aynı değilse UnauthorizedAccessException oluşturur. |
| RequireSamePath(SafeFileHandle, String) |
Verilen SafeFileHandle'ın kurallı yolu expectedPath ile aynı değilse UnauthorizedAccessException oluşturur. |
| SetFileAttributeNormal(String) |
FileAttribute = Normal ayarını yaparak bir dosyanın silinip silinemediğini denetler. Öznitelik ayarlanamıyorsa kullanıcının erişim hakları yoktur |
| WriteAllText(String, String) |
Yeni bir dosya oluşturur, belirtilen dizeyi dosyaya yazar ve ardından dosyayı kapatır. Hedef dosya zaten varsa üzerine yazılır. Dosyanın kurallı yolu Windows Yeniden Ayrıştırma Noktaları içeriyorsa, UnauthorizedAccessException oluşturulur ve hiçbir şey yazılmaz. |