2010-05-26 14 views

Odpowiedz

15

klasie FileSystemWatcher ma popytu łącza dla uprawnień CAS nieograniczony. Oznacza to, że zweryfikuje, czy jego bezpośredni rozmówca (tj. Twój kod, jeśli bezpośrednio spożywasz klasę) ma nieograniczone uprawnienia.

Niestety użycie łącza wymaga otwarcia potencjalnych luk w zabezpieczeniach, ponieważ uprawnienia pośrednich dzwoniących (tj. Kod, który wywołuje Twój kod) nie są weryfikowane przez żądanie łącza. Oznacza to, że pośredni rozmówca z ograniczonymi uprawnieniami może być w stanie manipulować zaufanym kodem i zrobić coś niegodziwego w jego imieniu, że w przeciwnym razie nie miałby uprawnień do wykonania.

Jednym ze sposobów zapobiegania atakowi tego rodzaju jest zastosowanie pełnego żądania tego samego uprawnienia do dowolnego kodu, który pochłania typ lub członka z żądaniem łącza. Zapewni to, że pośredni rozmówcy będą podlegać temu samemu żądaniu uprawnień, zapewniając w ten sposób, że nie będą mogli zrobić nic za pomocą twojego kodu, którego nie byliby w stanie zrobić samodzielnie. Zastosowanie pełnego popytu tego typu jest pokazane w przykładowym kodzie MSDN dla FileSystemWatcher.

+0

Nie sądzę, abym to zrozumiał wystarczająco dobrze. Przykład działa poprawnie bez linii "PermissionSet ...". W jaki sposób pomaga to kodowi? Co oznacza "FullTrust"? Admin privlidges na maszynie lub po prostu pełny dostęp do danego pliku/katalogu? – Jeff

+4

Ten atrybut nie pomaga w uruchomieniu kodu. Zamiast tego pomaga zapobiec uruchomieniu, gdy nie powinno. "FullTrust" odnosi się do nieograniczonego prawa dostępu do kodu. Nie ma to nic wspólnego z uprawnieniami przyznanymi kontu użytkownika. Zabezpieczenia dostępu do kodu to dodatkowa warstwa zabezpieczeń zapewniona przez platformę .NET, która pozwala kontrolować uprawnienia przyznane uruchomionemu kodowi. Aby zapoznać się ze wstępem, zobacz http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx. –