在我的应用程序中,当用户上传或下载文件时,我构建了一个静态字符串。在该字符串中,文件名是从该字符串中的前端传递的。通过这种方式,用户可以执行诸如 ..\..\another file.file 之类的操作来篡改和获取其他用户的数据。因此,我需要过滤我得到的文件名以防止这种情况发生。哪些字符需要过滤以防篡改?我现在有双点和反斜杠和正斜杠。还有什么我应该考虑的吗?是否有在 C# 中执行此操作的标准方法?
最佳答案
我建议使用 Path.GetInvalidFileNameChars
:
public static bool IsValidFileName(string fileName)
{
return fileName.IndexOfAny(Path.GetInvalidFileNameChars()) == -1;
}
..
通常只有在 \
或 /
之前和/或之后是危险的,这两者都包含在数组中由 GetInvalidFileNameChars
返回。 ..
本身是无害的(除非你专门解析目录路径),你不应该禁止它,因为人们可能想在他们的文件名中引入省略号(例如 The A. ..Z of Programming.pdf
).
关于c# - 下载/上传文件,过滤什么字符c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266374/