c# - 下载/上传文件,过滤什么字符c#

标签 c# asp.net-mvc-3 file filtering

在我的应用程序中,当用户上传或下载文件时,我构建了一个静态字符串。在该字符串中,文件名是从该字符串中的前端传递的。通过这种方式,用户可以执行诸如 ..\..\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/

相关文章:

c# - 列出/详细说明不同的窗口是否可以同步并数据绑定(bind)到同一个集合?

当 plist 文件受表单例份验证保护时,iOS 无线安装失败

asp.net-mvc - 干燥 ASP.NET MVC 操作 : ApplicationController or Service?

linux - 为什么使用sftp上传文件后文件权限会发生变化?

php - 在 PHP 中如何对文件进行反向排序?

c# - 在 C# 中,如何将空检查添加到动态快速代码中

在 Base 类中声明的 C# 接口(interface)方法不需要在 Derived 类中再次实现

c# - 如何在组合框中放置换行符/制表符

asp.net-mvc-3 - MVC3下拉列表未选择所选项目

c - 对包含零件列表的文件进行 fseek 和 fread