У нас есть приложение на C #, которое будет записывать файлы в настраиваемое местоположение.Набор файлов (и относительные пути) определяется во время выполнения.
Мы хотим убедиться, что он не может записывать файлы за пределами сконфигурированного местоположения.
Например, сконфигурированное местоположение может быть c: \ Stuff \ Export, для программы было бы ошибкойнаписать что-нибудь в C: \ Stuff \ Important
Действительно, я думаю, что мы можем достичь этого двумя способами: 1) Не указывать ни один из относительных путей (файлов, которые нужно записать), указать «Родительский каталог» (обычно)../ ") - System.Path не указывает компонент пути" родительский каталог "(как это имеет место для разделения пути, т.е. System.Path.PathSeparator).Я чувствую себя немного грязным, проверяя наличие "../" в строке.
2) Утверждение, что все окончательные абсолютные пути, которые сгенерированы (путем объединения выходного местоположения с относительным путем файла) относительно, т. Е. Ниже выходного местоположения .Я не совсем уверен, как это сделать, хотя.
Example usage:
Output directory: c:\Stuff\Export
Output path 1: "foo\bar\important.xls"
Output path 2: "foo\boo\something.csv"
Output path 3: "../../io.sys"
Expected final files
1. c:\Stuff\Export\foo\bar\important.xls
2. c:\Stuff\Export\foo\boo\something.csv
3. Should throw exception