我将接受.NET Core 1.0.1中新网站上的用户上传。我只想允许图像,而不仅仅是任何文件。如何在.NET Core中执行此验证?是否可以不使用If frm.option1.Value = True Then
strBcc = "xxx@xxxx.com"
,因为它没有实现?
This answer看起来很有希望,但最终会使用System.Drawing
。是否足以检查内容类型和扩展名?
编辑:接受的答案是我需要的,但我会在这里分享我的实际实施。我在.NET Core中这样做,但我非常确定相同的代码适用于完整的框架。
System.Drawing
答案 0 :(得分:4)
仅检查文件扩展名是不够的。我可以创建一个ZIP文件,然后只需将扩展名重命名为.jpg
,您就认为它是一个有效的文件。
图像格式在它们的开头确实有“魔术字节”,您可以使用它来潜在地识别文件实际上是图像。 This Wikipedia entry here has a list of magic numbers you could check against
另请注意,内容类型可能是欺骗性的。
所以你有两件事你可以做。原始答案中指定的内容类型,结合检查文件的“幻数”。如果有人真的想要上传不是图像的duff数据并绕过这些检查,你可能需要做其他事情。
因此,您可以实施3个已知警卫: