2012-10-30 20 views
0

我們在Azure中的輔助角色,它使用Process.Start揭開序幕一個後臺進程(它承載我們需要運行本地應用程序)正在調用process.start從天青工人角色的安全風險?

的FxCop給我CA2122錯誤的整個負載由於鏈路的需求。當我試圖添加此屬性:

[PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")] 

然後我開始變得CA2135代替,解決這似乎是添加SecurityCritical屬性來代替。

但是後來我再次獲得了CA2122。

這些事情都是問題嗎?他們在什麼情況下可以,我怎麼能確定我沒有引入安全問題?

+0

是第二個CA2122在同一個方法上,還是在調用方? – Rushyo

+0

我認爲這是在相同的方法 –

回答

1

SecurityCritical應該完全信任的LinkDemand執行等效角色:

的性SecurityCriticalAttribute相當於全 信任的鏈接需求。標有SecurityCriticalAttribute的類型或成員只能由完全受信任的代碼調用 ;它不必要求 特定的權限。它不能被部分可信的代碼調用。

埃爾戈,我建議增加SecurityCritical(履行爲CA2135的需求),並抑制CA2122,這大概只是微軟忘記考慮到他們的代碼分析他們的新的解決方案。

CA2122的目的是爲了確保該方法......

不再提供給鏈接要求保護 成員的不安全訪問。

這不是(這確保了構件只能通過完全可信代碼被調用)一次加入SecurityCritical的情況下,使所述第二CA2122是假陽性。

+0

我發現[這](http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/421ddb36-c097-45e0-a2b6-deb570dda638/)其中支持這一點。 –