【问题标题】:.NET C# image upload validation.NET C# 图片上传验证
【发布时间】:2017-04-28 17:08:57
【问题描述】:

出于安全目的,我目前正在开发一个网站,用户可以在该网站上上传有效图像,而不是任何其他文件类型。 Atm 我有此代码,但图像扩展名仍可能被篡改。

if (extension == ".jpg" || extension == ".jpeg" || extension == ".JPG" || extension == ".gif" || extension == ".png"

有什么方法可以绝对确保只允许这些图像格式并且不能更改它们(例如每种格式的全局代码)。谢谢

【问题讨论】:

标签: c# .net image format


【解决方案1】:

最好检查 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;
}

【讨论】:

  • 我已将代码更改为 if (file.ContentType.ToLower() == "image/jpeg" || file.ContentType.ToLower() == "image/gif" || file. ContentType.ToLower() == "image/png" 但这样用户仍然可以将任何其他图像格式转换为 jpg 左右并被应用程序接受
【解决方案2】:

查看this 问题,我已经使用这个解决方案很长一段时间了。

【讨论】:

    猜你喜欢
    • 2017-05-28
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2011-06-22
    • 2015-03-13
    • 2017-03-26
    相关资源
    最近更新 更多