我刚刚对我正在处理的一个项目进行了代码分析,并且收到了这条消息的警报。
警告 17 CA2122:Microsoft.Security:“Quantizer.Quantize(Image)”调用具有 LinkDemand 的“Bitmap.LockBits(Rectangle, ImageLockMode, PixelFormat)”。通过进行此调用,“Bitmap.LockBits(Rectangle, ImageLockMode, PixelFormat)”会间接暴露给用户代码。查看以下可能公开绕过安全保护方法的调用堆栈:
->'Quantizer.Quantize(Image)' ->'Quantizer.Quantize(Image)' ->'ImageFactory.SaveFileAndReset(string)' ->'ImageFactory.保存(字符串)'
private void SaveFileAndReset(string path)
{
// Fix the colour palette of gif images.
if (this.imageFormat == ImageFormat.Gif)
{
OctreeQuantizer quantizer = new OctreeQuantizer(255, 8);
this.Image = quantizer.Quantize(this.Image);
}
/// etc....
我可以在 MSDN 上找到的信息非常简短,我无法从中提取任何特别有意义的内容,我在网上找到的大多数答案只是建议用标志打开警告显然这是我不想做的事情确保我这样做是安全的。
有人可以解释一下这实际上意味着什么,以及我将如何解决触发警告的任何安全问题?