恶意软件检测-我可以在ASP.NET上传之前测试图像文件的有效性吗?



我有一个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是一个文本文件的名称),但显然这并不能阻止一个文件,是一个带有恶意代码的图像附加到它加载为图像,因此将其保存为MemoryStream,然后将流写入字节数组(稍后保存在数据库中)据说修复了这个。

为了避免别人利用上传照片的功能来传递程序和其他信息,你可以采取两个主要步骤。

  1. 读取并再次保存图像与您的代码,以删除任何其他。
  2. 将每个图像的大小限制为一个逻辑数字。

为了避免有人上传错误的代码并在你的服务器上运行它,你保留一个单独的文件夹,不允许运行任何东西。更多信息请参见:

我被黑了。邪恶的aspx文件上传称为AspxSpy。他们仍在努力。帮我逮住他们!

和同一主题的一般主题:准备ASP。Net网站渗透测试

最新更新