You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET Core中如何防范Path Manipulation问题?Fortify扫描疑问

在C# .NET Core中防范Path Manipulation问题的方案

绝对不能忽略Fortify的扫描结果,Path Manipulation(路径操纵)是高危安全漏洞——攻击者可通过构造恶意路径(比如利用../进行目录遍历),访问或篡改系统中未授权的文件,因此必须针对性修复。

核心修复原则

所有文件操作的路径必须经过严格校验和规范化,确保最终路径落在预期的安全目录范围内。

1. 限制路径到安全根目录(白名单机制)

定义允许操作的固定根目录,将用户输入的路径转换为该根目录下的相对路径,合并后校验最终路径是否在安全目录内。

示例代码:

// 定义安全根目录,比如应用内的专属文件存储目录
string safeRootPath = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "AuthorizedFiles"));
// 假设userInputPath是外部传入的路径参数
string userInputPath = "user_docs/report.pdf";

// 合并并规范化路径,避免相对路径遍历
string fullPath = Path.GetFullPath(Path.Combine(safeRootPath, userInputPath));

// 校验最终路径是否在安全根目录范围内
if (!fullPath.StartsWith(safeRootPath, StringComparison.OrdinalIgnoreCase))
{
    throw new SecurityException("非法路径,禁止访问");
}

// 校验通过后再执行文件操作
if (File.Exists(fullPath))
{
    // 业务逻辑处理
}

2. 过滤非法路径内容

移除或拒绝包含目录遍历序列、绝对路径前缀、非法字符的输入,同时禁止使用操作系统保留的文件名。

示例代码:

string SanitizeInputPath(string inputPath)
{
    // 移除目录遍历序列
    string sanitized = inputPath.Replace("../", "").Replace("..\\", "")
                                .Replace("./", "").Replace(".\\", "");
    
    // 禁止使用绝对路径
    if (Path.IsPathRooted(sanitized))
    {
        throw new ArgumentException("不允许传入绝对路径");
    }
    
    // 过滤文件名中的非法字符
    char[] invalidChars = Path.GetInvalidFileNameChars();
    if (sanitized.IndexOfAny(invalidChars) != -1)
    {
        throw new ArgumentException("路径包含非法字符");
    }
    
    // 禁止使用系统保留文件名(如con、nul等)
    string fileName = Path.GetFileName(sanitized);
    var reservedNames = new[] { "con", "nul", "prn", "aux" };
    if (reservedNames.Contains(fileName, StringComparer.OrdinalIgnoreCase))
    {
        throw new ArgumentException("禁止使用系统保留文件名");
    }
    
    return sanitized;
}

3. 遵循最小权限原则

运行应用的进程仅授予必要的文件系统权限——比如只允许读写指定的安全目录,即使路径校验被绕过,也能最大程度降低攻击危害。

4. 避免直接拼接路径字符串

优先使用Path.Combine()方法拼接路径,该方法会自动处理不同操作系统的路径分隔符,减少因手动拼接导致的路径漏洞。

总结

通过安全目录白名单校验、路径内容清洗、最小权限配置这几个核心手段,就能有效修复Fortify扫描出的Path Manipulation问题,彻底规避路径操纵带来的安全风险。

内容的提问来源于stack exchange,提问作者Özlem Kozan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:20:35