我剛剛在我正在進行的項目上運行代碼分析,並且我收到了此消息的警報。代碼分析期間的LinkDemand警告。錯誤CA2122
警告17 CA2122:Microsoft.Security: 'Quantizer.Quantize(圖像)' 調用到 'Bitmap.LockBits(矩形,ImageLockMode,的PixelFormat)' ,其具有的LinkDemand。通過進行此調用, 'Bitmap.LockBits(Rectangle,ImageLockMode,PixelFormat)'間接暴露給用戶代碼 。回顧下面的調用堆棧可能會暴露一種規避安全保護的方法:
- >'Quantizer.Quantize(Image)' - >'Quantizer.Quantize(Image)' - >'ImageFactory.SaveFileAndReset(string)' - >' 「ImageFactory.Save(串)」
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上的信息是非常短暫的,我不能提取任何東西,從它特別有意義,最答案,我發現在網上簡單地暗示的轉折點很明顯,這是我不想做的事,如果沒有絕對確定我是安全的話。
有人能解釋一下這實際上意味着什麼,我將如何去解決任何我觸發警告的安全問題?
您定位的.NET版本是什麼? –
@Nicole Calinoiu:.NET Framework 4 –
OctreeQuantizer和ImageFactory是否在同一個程序集中?是/是強烈命名的程序集?他/他們裝飾有以下任何屬性:AllowPartiallyTrustedCallers,SecurityTransparent,SecurityCritical,SecurityRules? –