如何通过将记事本文件的扩展名更改为jpeg来避免转换的图像

时间:2013-07-24 13:49:42

标签: c# asp.net-mvc vb.net security

我们知道如果我们创建一个简单的记事本文件并将扩展名更改为jpeg 它会将文本文件转换为jpeg文件。某些恶意程序可能会有机会 写在记事本文件中。 我想检查这种类型的图像文件我将如何做。 2.有任何技巧,以便我可以找到这种类型的转换文件

使用.net c#,asp.net,vb.net

1 个答案:

答案 0 :(得分:3)

文件扩展名与其内容无关,只需预先处理文件的前几位即可查看它是什么。 (然后,如果您可以从中确定类型,则可以继续使用该文件的解析代理)。

例如:

  • 图片文件可以ÿØÿà[NUL][DLE]JFIF作为起始位。
  • PDF可以从%PDF-
  • 开始
  • 压缩文件可以以PKRar!或其他变体开头,具体取决于压缩算法。

我能说的最好的办法是尝试通过System.Drawing.Image运行该文件。如果它实际上是一个图像,解析器不会扼杀它。如果不是,你会得到某种例外,你知道它不是一个图像,或者是不正确的(有害的)。

顺便说一句(因为它有点烦我)说“我们知道如果我们创建一个简单的记事本文件并将扩展名更改为jpeg它会将文本文件转换为jpeg文件”并非完全正确。您所做的只是指定默认应用程序来打开文件。名为.jpg.png甚至.xyz的文本文件仍然是文本文件,它不再使用记事本(或任何默认设置)来打开它。