使用ASP.Net验证上载的文件的内容类型

时间:2009-02-26 17:48:54

标签: asp.net file

如何在不使用ASP.Net的文件扩展名或mime类型的情况下验证文件内容类型。

我不想使用mime类型,因为它似乎是由文件扩展名决定的。

3 个答案:

答案 0 :(得分:1)

您可以在UrlMon.dll中使用FindMimeFromData()函数(使用pinvoke)。

请参阅此功能的this page for an example和此MSDN page for the documentation

答案 1 :(得分:1)

这实际上取决于文件类型。对于许多文件类型,您可以检查文件的标头,该标头通常位于文件中第一个0字符之前。我曾经有一些代码来检查图片类型,所以我可能会在某个地方找到它。

但是,有些文件类型没有这种形式的标题,比如XML(是的,这是一个便宜的例子,但我很容易想到; - >)。我相信所有图形类型都有标题,其他二进制文件类型也是如此。

正如安德鲁所说,标题不是100%。但是,如果文件“格式错误”,它不太可能是黑客攻击。它更可能是损坏的上传或上传损坏的文件。

答案 2 :(得分:0)

没有通用的方法来验证文件是否属于给定的扩展类型。

您可以创建格式的白名单(png,jpg,zip等)并检查文件标题以确定它是否符合预期的格式。

即使这不是万无一失的,因为文件内容本身可能会以一种只有在尝试加载它时才会变得明显的方式出现。