【发布时间】:2017-12-01 11:22:54
【问题描述】:
有什么方法可以找到文件的确切扩展名。例如,如果扩展名是 .csv,有人手动将扩展名更改为 .xlsx(例如,将桌面中的 .csv 扩展名手动更改为 .pdf).where .Now文件扩展名将更改为 .xlsx 格式,但内容属于 .csv 格式。因此有任何方法可以在 C# 中找到此类恶意文件。 下面的代码获取文件扩展名,但不知道是否手动更改文件扩展名
Path.GetExtension(Be.FileName).ToLower().Contains(".csv")
我想检查内容类型扩展名和文件扩展名。因为一些入侵者可能会将文件扩展名更改为我们想要的扩展名。但是文件内容可能属于不同的扩展名。由于上面的代码只找到文件扩展名而不是内容确切的扩展名。
我们在 CSVhelper 中是否有任何其他属性来查找此类文件。
有人可以帮忙吗?
【问题讨论】:
-
您所拥有的确实找到了“确切的扩展名”——但这与“文件实际内容的格式”有很大不同。文件名与其内容之间没有保证的关系。
-
您可以发明某种启发式文件检查器....但是大量的案例会使这变得不可能。你知道你“想要”什么文件——尝试解析它,捕捉错误并责备用户。废话 - 废话。
-
另外,请记住,两个文件可能包含完全相同的内容,但预期的解释是不同的。例如。 HTTP 中的内容类型试图处理的问题。
-
引用@JonSkeet 文件名与其内容之间的关系没有保证。我(很久以前)读到了一种方法,可以同时创建一个有效的 bmp 和一个有效的 HTML 文件(位图和 HTML 的内容完全不相关)。将文件命名为 .bmp,双击它,确定将打开 Paint 或任何显示图像的默认编辑器。将其命名为 .HTML,它将打开显示 HTML 的浏览器。长话短说,您也许可以编写一些启发式解析器,但请注意,您不能确定它是否能 100% 正确工作。
标签: c# asp.net-mvc csvhelper