繁体   English   中英

下载/上传文件,过滤哪些字符c#

[英]Downloading/Uploading file, what characters to filter c#

在我的应用程序中,我在用户上传或下载文件时构建一个静态字符串。 在该字符串中,文件名从该字符串的前端传递。 通过这种方式,用户可以执行诸如.. \\ .. \\ another file.file之类的操作来篡改并从其他用户获取数据。 因此,我需要过滤我得到的文件名以防止这种情况发生。 需要过滤哪些字符以防止篡改? 我现在有双点和后退和正斜杠。 还有什么我应该考虑的吗? 在C#中可能有一种标准的方法吗?

我建议使用Path.GetInvalidFileNameChars

public static bool IsValidFileName(string fileName)
{
    return fileName.IndexOfAny(Path.GetInvalidFileNameChars()) == -1;
}

..通常只有在\\/之前和/或之后才有危险,两者都包含在GetInvalidFileNameChars返回的GetInvalidFileNameChars 就其本身而言, ..是无害的(除非你专门解决目录路径),你不应该禁止它,因为人们可能希望在他们的文件名介绍省略号(如The A...Z of Programming.pdf )。

如果不同的用户保存具有相同名称的文件,该怎么办? 您是否为每个用户创建了一个文件夹?

您应该做的最有可能的是将它们提供的名称存储在数据库记录中,该记录还包含指向实际文件的指针(使用您生成的文件名,可能是guid)。 如果您还想将文档保存在数据库中,也可以考虑使用文件流数据类型。

让用户确定服务器上的文件名是没有什么好处的:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM