ReparsePointAware Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Kumpulan fungsi utilitas File dan Direktori yang memastikan file dan folder yang berinteraksi tidak memiliki titik reparse Windows pada jalurnya dan bahwa jalur dalam kode cocok dengan jalur aktual pada disk.
Injeksi titik reparse adalah vektor eksploitasi keamanan yang diketahui/umum. Lihat di sini untuk informasi umum selengkapnya tentang mereka: https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points
Tujuan dari set fungsi ini adalah untuk mendapatkan handel file Windows, memverifikasi bahwa itu berada di jalur yang diharapkan dan kemudian melakukan semua operasi file dengan handel yang sama. Ini BUKAN pola yang aman untuk memverifikasi file dan kemudian melakukan operasi tambahan menggunakan jalur file sebagai penyerang dapat mengeksploitasi perlombaan antara pemeriksaan file dan operasi file berdasarkan jalur file. Kelas serangan ini dikenal sebagai Time-of-Check/Time-of-Use (TOCTOU). Untuk menghindari hal ini, kelas ini akan menyimpan handel file dan melakukan semua operasi pada handel setelah dianggap berada di lokasi yang benar. Karena semua operasi didasarkan pada handel file, kami tahu bahwa kami memodifikasi file yang diverifikasi agar benar.
public static class ReparsePointAware
type ReparsePointAware = class
Public Class ReparsePointAware
- Warisan
-
ReparsePointAware
Metode
| CreateDirectory(String) |
Membuat semua direktori dan subdirektori di jalur yang ditentukan. Jika jalur kanonis direktori berisi Windows Reparse Points, UnauthorizedAccessException akan dilemparkan. |
| CreateText(String) |
Membuat atau membuka file untuk menulis teks yang dikodekan UTF-8. Jika membuka file yang ada, file akan terpotok. Jika jalur kanonis file berisi Titik Pemilahan Ulang Windows, UnauthorizedAccessException dilemparkan dan tidak ada yang ditulis. |
| DeleteFile(String) |
Menghapus file yang ditentukan. Jika jalur kanonis file berisi Titik Pemilahan Ulang Windows, UnauthorizedAccessException dilemparkan dan tidak ada yang dihapus. |
| GetFinalPath(SafeFileHandle) |
Dapatkan jalur kanonis penuh ke SafeFileHandle tertentu, dengan setiap titik penguraian ulang diperluas. |
| HasReparsePoints(SafeFileHandle, String) |
Memeriksa apakah objek sistem file yang diwakili oleh SafeFileHandle memiliki jalur kanonis yang cocok dengan expectedPath yang diberikan. |
| MoveFile(String, String) |
Memindahkan file tertentu ke lokasi baru, menyediakan opsi untuk menentukan nama file baru. Jika jalur kanonis file berisi Titik Reparse Windows, UnauthorizedAccessException akan dilemparkan. |
| OpenFile(String, FileMode, FileAccess, FileShare) |
Membuka System.IO.FileStream pada jalur yang ditentukan, memiliki mode yang ditentukan dengan akses baca, tulis, atau baca/tulis dan opsi berbagi yang ditentukan. Jika jalur kanonis file berisi Titik Reparse Windows, UnauthorizedAccessException akan dilemparkan. OpenFile akan menyematkan direktori terlebih dahulu sebelum melakukan operasi file apa pun. Jika menyematkan direktori gagal atau direktori adalah ReparsePoint, UnauthorizedAccessException akan dilemparkan. |
| OpenRead(String) |
Membuka file yang ada untuk dibaca. Jika jalur kanonis file berisi Titik Reparse Windows, UnauthorizedAccessException akan dilemparkan. |
| OpenWrite(String) |
Membuka file yang sudah ada atau membuat file baru untuk ditulis. Jika jalur kanonis file berisi Titik Reparse Windows, UnauthorizedAccessException akan dilemparkan. |
| PinAndRequireNoReparsePoints(String, Boolean) |
Membuka SafeFileHandle ke file atau direktori yang ada dan mengonfirmasi bahwa jalur kanonis yang dihasilkan cocok dengan jalur yang diberikan. SafeFileHandle yang dihasilkan adalah IDisposable dan dapat digunakan dalam menggunakan pernyataan untuk memastikan bahwa operasi file berikutnya menulis ke jalur tanpa titik penguraian ulang. |
| PinHandle(String, Boolean) |
Mengambil handel pada file atau direktori yang ada untuk memastikan bahwa file atau direktori tersebut tidak dapat dipindahkan. |
| RequireNoReparsePoints(String, Boolean) |
Melempar UnauthorizedAccessException jika jalur kanonis tidak sama dengan expectedPath. |
| RequireSamePath(SafeFileHandle, String) |
Melempar UnauthorizedAccessException jika jalur kanonis SafeFileHandle yang diberikan tidak sama dengan expectedPath. |
| SetFileAttributeNormal(String) |
Memeriksa untuk melihat apakah file dapat dihapus dengan mengatur FileAttribute = Normal. Jika tidak dapat mengatur atribut, maka pengguna tidak memiliki hak akses |
| WriteAllText(String, String) |
Membuat file baru, menulis string yang ditentukan ke file, lalu menutup file. Jika file sudah ada, file akan ditimpa. Jika jalur kanonis file berisi Titik Pemilahan Ulang Windows, UnauthorizedAccessException dilemparkan dan tidak ada yang ditulis. |