【问题标题】:c# malicious change of file formatc#恶意更改文件格式
【发布时间】: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


【解决方案1】:

CSV 是一种非常简单的检查文件类型。 在将文件作为程序输入之前编写文件解析器。

解析器执行以下操作: 证明文件作为 CSV 文件的完整性。 它通过检查中间的分隔符和末尾的新行分隔符来做到这一点。

如果文件的标题正确且格式正确为 CSV,则只有您继续。

第二种方法可能有点复杂。如果您可以控制整个文件系统,那么您可以将文件记录器放置在您想要收到通知的文件上。因此,文件中的任何更改都会报告给您的程序。这最终会消耗大量资源,并且有时仍可能失败。

【讨论】:

    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2018-09-06
    • 1970-01-01
    • 2015-09-05
    • 2014-11-17
    相关资源
    最近更新 更多