我正在使用HP Fortify运行代码,并发现了一些路径操作问题。我理解其上下文并尝试解决。
与其在所有从数据库查询SOME路径值的地方储存输出文件(日志,导出数据等),我尝试将其集中处理。因此,不是使用File.WriteAllText()来写入某些路径和文件名、内容,而是想要封装为FortifyFileWriteAllText()。然后,在这个函数中,我进行路径验证检查,如果有效,则仅允许如下的写操作...
public static bool FortifyFileWriteAllText( string fileToWrite, string content)
{
if( ! MyPathValidationRoutine( fileToWrite ))
return false;
File.WriteAllText( fileToWrite, content );
return true;
}
因此,我知道这只是实际验证和防止错误写入的缩写,但我调用Path.GetFullPath()来防止任何类似于..\..\..的路径引用。 然后查看最终路径并明确防止像C:、C:\Windows和其他一些根目录,但也有一个“CLEAN”路径列表。
那么,我该如何应用规则,以便任何传递到此例程的内容都是可以的,并且已经明确检查和确定是正确的。