图片上传 - 调整大小以避免内容走私攻击

时间:2012-02-09 12:58:01

标签: .net image security image-processing

阅读这篇文章我选择通过1px调整图像大小以阻止内容走私攻击:

Image Uploading - security issues

但由于某种原因透明的GIF出现黑色背景。这是代码:

        Bitmap FullsizeImage = (Bitmap)System.Drawing.Image.FromStream(OriginalFile);

        //FullsizeImage.MakeTransparent(Color.Transparent);

        int NewWidth = FullsizeImage.Width - 1;
        int NewHeight = FullsizeImage.Height * NewWidth / FullsizeImage.Width;

        Bitmap CroppedImage = new Bitmap(NewWidth, NewHeight);
        Graphics g = Graphics.FromImage(CroppedImage);
        g.DrawImage(FullsizeImage, new Rectangle(0, 0, FullsizeImage.Width, FullsizeImage.Height));

        CroppedImage.Save(ImagePath, FullsizeImage.RawFormat);

        g.Dispose();
        CroppedImage.Dispose();
        FullsizeImage.Dispose();

我尝试使用FullsizeImage.MakeTransparent(Color.Transparent),但是将图像转换为png,我想保留原始格式。

我的最终目的是避免发生可能的攻击,所以任何关于如何以不同方式执行此操作而不是调整大小的想法?或者任何人都有一个代码,通过保持格式实际调整透明GIF的大小?

1 个答案:

答案 0 :(得分:0)

调整图像大小需要将其转换为全彩色,当您这样做时,调色板级透明度会丢失。

我建议在图像上添加1像素边框,并使用透明颜色进行边框填充。