我有以下场景(C#、WinForms)。我有某种项目文件保存在某个目录中。项目文件包含对另一个文件的引用。该引用相对于保存项目文件的位置。
示例:项目文件保存在c:\projects\project.xyz下。另一个文件被引用为“\someotherdir\file.abc”。
这工作正常,但可能有人试图将相对路径操纵为“..\Windows\System32\file.abc”之类的东西。所以需要检查相对路径是否指向项目保存路径之外(这是一个定义要求,所有引用的文件都在项目路径内)。
如何检测这种情况?
最佳答案
您可以尝试使用以下扩展方法:
public static bool IsChildOf(this string path, string parentPath)
{
return Path.GetFullPath(path).StartsWith(Path.GetFullPath(parentPath),
StringComparison.InvariantCultureIgnoreCase);
}
关于c# - 如何确定相对路径是否指向给定路径之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131704/