dotnet / dotnet/dotnet-api-docs

How to safely handle file paths and check for valid paths

Aperta
#3,544 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
area-System.IO Pri3 untriaged
Lingua principale
C#
Stelle
949
Fork
1.7k
Merge medio
2g 19h
PR unite (30g)
52

Descrizione

## How to safely handle file paths and check for valid paths

From dotnet/dotnet-api-docs#877 (https://github.com/dotnet/dotnet-api-docs/issues/877)

We should extend this to document how to safely check for path containment (as we've done for the example for [ExtractToFile](https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.zipfileextensions.extracttofile?view=netcore-2.1#System_IO_Compression_ZipFileExtensions_ExtractToFile_System_IO_Compression_ZipArchiveEntry_System_String_System_Boolean_), etc.)

Maybe a linked article from Path.Join/Combine/GetFullPath on how to safely handle paths? Basically something discussing directory traversal attacks and how to check for one path being contained within another...

The most salient point would be that you should always fully normalize user input paths (untrusted input) and be aware of combination gotchas.

See dotnet/dotnet-api-docs#877

//cc @JeremyKuhne

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia leggendo dotnet/dotnet-api-docs#877 e l'esempio di documentazione esistente di ExtractToFile. Esamina le indicazioni necessarie su Path.Join, Path.Combine e Path.GetFullPath; done dovrebbe essere un articolo collegato che spiega la normalizzazione dei percorsi non attendibili, le insidie della combinazione, il Directory Traversal e i controlli di contenimento.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp
Ambito
documentation, security
Tipo di issue
Documentazione
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.