我目前正在开发一个网站,用户可以上传有效图片,而不是出于安全目的而上传任何其他文件类型。我有这个代码,但图像扩展仍然可能被篡改。
if (extension == ".jpg" || extension == ".jpeg" || extension == ".JPG" || extension == ".gif" || extension == ".png"
有没有办法确保只允许这些图像格式并且不能更改它们(就像每种格式的全局代码一样)。感谢
答案 0 :(得分:0)
最好检查contentType而不是扩展名。
您可以在此处找到一个非常全面的列表:http://www.freeformatter.com/mime-types-list.html。
可以通过以下方式进行简单检查:
if (myFile.ContentType == "video/mpeg")
{
// Do your thing
}
else{
// error
}
如果您想要查看更多内容,可以使用以下代码:
string[] filetypes = { "application/pdf", "image/jpeg", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-excel" };
if (!filetypes.Contains(myFile.File.ContentType))
{
//not accepted content type
}
您还可以通过尝试实例化新位图来检查其是否为有效图像
try
{
using (var bitmap = new System.Drawing.Bitmap(myFile.InputStream))
{
}
}
catch (Exception)
{
return false;
}
答案 1 :(得分:0)
查看this问题,我已经使用此解决方案已有一段时间了。