Używam VSTS 2008 + .Net 2.0 + C#. I po analizie przeprowadzam analizę kodu. Mam następujące mylące ostrzeżenie o zabezpieczeniach. Oto ostrzeżenie i związany z nim kod, wszelkie pomysły, co jest nie tak? Jeśli jest ostrzeżenie o zabezpieczeniach, jak to naprawić?co oznacza to ostrzeżenie o zabezpieczeniach (klasa .Net Process)?
System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "IExplore.exe";
myProcess.StartInfo.Arguments = @"default.html";
myProcess.StartInfo.Verb = "runas";
myProcess.Start();
ostrzeżenie: CA2122: Microsoft.Security: "TestHtml() nazywa się 'Process.Start()', która ma LinkDemand. Wykonując to połączenie, "Process.Start()" jest pośrednio narażone na kod użytkownika. Zapoznaj się z poniższym stosem wywołań, który może narazić sposób na obejście zabezpieczeń:
Dzięki, ale Twój kod ma budować błąd. Błąd Nazwa "Prawda" nie istnieje w bieżącym kontekście. Jakieś pomysły? Używam .Net 2.0 i .Net 2.0 nie obsługuje go? – George2
Witam serdecznie, mam kilka nowych pomysłów i myślę, że to nie dziura w bezpieczeństwie. Załóżmy, że metoda Foo wywołuje wywołania TestHtml i TestHtml Process.Start. Nawet jeśli TestHtml nie jest włączony w LinkDemand, proces Sice Process.Start jest włączony z LinkDemand, zawsze będzie sprawdzał uprawnienia TestHtml (TestHtml jest bezpośrednim dzwoniącym). Więc nawet jeśli Foo nie ma wystarczających uprawnień, wywołanie z TestHtml do Process.Start zakończy się niepowodzeniem. Myślę więc, że nie ma problemów z bezpieczeństwem. Wszelkie komentarze? – George2
@George, właśnie zgaduję, ale lepiej byłoby sprawdzić wymagania bezpieczeństwa tak wcześnie, jak to możliwe, jeśli TestHtml zmieniłby stan dowolnego zastosowania przed niepowodzeniem. – sisve