我有一个 ASP.NET Web 应用程序,它允许用户将文件从他的 PC 上传到 SQL Server 数据库(稍后用于为标签生成图像)。是否有一种“简单”的方法可以在 .NET 中测试图像,以在保存之前验证它不包含任何恶意内容?
现在,我使用这个:
MemoryStream F = new MemoryStream();
Bitmap TestBitmap = new Bitmap(Filename);
TestBitmap.Save(F, System.Drawing.Imaging.ImageFormat.Png);
int PhotoSize = (int)F.Length;
Photo = new byte[PhotoSize];
F.Seek(0, SeekOrigin.Begin);
int BytesRead = F.Read(Photo, 0, PhotoSize);
F.Close();
如果 TestBitmap 不是图像(例如,如果 Filename 是文本文件的名称),则创建 TestBitmap 会失败,但显然这不会阻止带有恶意代码的图像文件作为图像加载,因此保存它作为 MemoryStream 然后将流写入字节数组(稍后保存在数据库中)据说可以解决这个问题。