Zabezpieczenia w formularzach systemu Windows — omówienie
Przed wydaniem programu .NET Framework cały kod uruchomiony na komputerze użytkownika miał takie same uprawnienia lub uprawnienia dostępu do zasobów, które miał użytkownik komputera. Jeśli na przykład użytkownik mógł uzyskać dostęp do systemu plików, kod mógł uzyskać dostęp do systemu plików; Jeśli użytkownik mógł uzyskać dostęp do bazy danych, kod mógł uzyskać dostęp do tej bazy danych. Chociaż te prawa lub uprawnienia mogą być akceptowalne dla kodu w plikach wykonywalnych, które użytkownik jawnie zainstalował na komputerze lokalnym, może nie być dopuszczalne w przypadku potencjalnie złośliwego kodu pochodzącego z Internetu lub lokalnego intranetu. Ten kod nie powinien mieć dostępu do zasobów komputera użytkownika bez uprawnień.
Program .NET Framework wprowadza infrastrukturę o nazwie Zabezpieczenia dostępu kodu, która umożliwia odróżnienie uprawnień lub praw, które kod ma od praw, które ma użytkownik. Domyślnie kod pochodzący z Internetu i intranetu może być uruchamiany tylko w ramach tego, co jest nazywane częściowym zaufaniem. Częściowe zaufanie podlega aplikacji serii ograniczeń: między innymi aplikacja jest ograniczona do uzyskiwania dostępu do lokalnego dysku twardego i nie może uruchomić niezarządzanego kodu. Program .NET Framework kontroluje zasoby, do których kod może uzyskiwać dostęp na podstawie tożsamości tego kodu: skąd pochodzi, czy ma zestawy Strong-Named, czy jest podpisany przy użyciu certyfikatu itd.
Technologia ClickOnce, która służy do wdrażania aplikacji Windows Forms, ułatwia tworzenie aplikacji uruchamianych w częściowym zaufaniu, w pełnym zaufaniu lub w częściowym zaufaniu z podwyższonym poziomem uprawnień. ClickOnce udostępnia funkcje, takie jak podniesienie uprawnień i wdrożenie zaufanej aplikacji, dzięki czemu aplikacja może zażądać pełnego zaufania lub podwyższonego poziomu uprawnień od użytkownika lokalnego w odpowiedzialny sposób.
Opis zabezpieczeń w programie .NET Framework
Zabezpieczenia dostępu do kodu umożliwiają zaufanie kodu w różnym stopniu w zależności od tego, skąd pochodzi kod i innych aspektów tożsamości kodu. Aby uzyskać więcej informacji na temat dowodów używanych przez środowisko uruchomieniowe języka wspólnego do określania zasad zabezpieczeń, zobacz Evidence. Pomaga chronić systemy komputerowe przed złośliwym kodem i pomaga chronić zaufany kod przed celowym lub przypadkowym naruszeniem zabezpieczeń. Zabezpieczenia dostępu do kodu umożliwiają również większą kontrolę nad akcjami, które może wykonywać aplikacja, ponieważ można określić tylko te uprawnienia, które mają mieć aplikacja. Zabezpieczenia dostępu do kodu mają wpływ na cały kod zarządzany przeznaczony dla środowiska uruchomieniowego języka wspólnego, nawet jeśli ten kod nie wykonuje pojedynczego sprawdzania uprawnień dostępu do kodu. Aby uzyskać więcej informacji na temat zabezpieczeń w programie .NET Framework, zobacz Key Security Concepts and Code Access Security Basics.
Jeśli użytkownik uruchamia plik wykonywalny Windows Forms bezpośrednio z serwera internetowego lub z udziału plików, stopień zaufania przyznany aplikacji zależy od tego, gdzie znajduje się kod i jak jest uruchamiany. Po uruchomieniu aplikacji jest ona automatycznie oceniana i otrzymuje nazwany zestaw uprawnień ze środowiska uruchomieniowego języka wspólnego. Domyślnie kod z komputera lokalnego ma zestaw uprawnień "Pełne zaufanie", kod z sieci lokalnej otrzymuje zestaw uprawnień "Lokalny intranet", a kod z Internetu ma zestaw uprawnień "Internet".
Notatka
W programie .NET Framework w wersji 1.0 z dodatkami Service Pack 1 i Service Pack 2 grupa kodów strefy internetowej otrzymuje zestaw uprawnień „Nic”. We wszystkich innych wersjach programu .NET Framework grupa kodów strefy internetowej otrzymuje zestaw uprawnień internetowych.
Uprawnienia domyślne przyznane w każdym z tych zestawów uprawnień są wymienione w temacie Domyślne zasady zabezpieczeń. W zależności od uprawnień odbieranych przez aplikację jest ona uruchamiana poprawnie lub generuje wyjątek zabezpieczeń.
Wiele aplikacji Windows Forms zostanie wdrożonych przy użyciu technologii ClickOnce. Narzędzia używane do generowania wdrożenia technologii ClickOnce mają inne wartości domyślne zabezpieczeń niż omówione wcześniej. Aby uzyskać więcej informacji, zobacz następującą dyskusję.
Rzeczywiste uprawnienia przyznane aplikacji mogą różnić się od wartości domyślnych, ponieważ można modyfikować zasady zabezpieczeń; Oznacza to, że aplikacja może mieć uprawnienia na jednym komputerze, ale nie na innym.
Tworzenie bezpieczniejszej aplikacji Windows Forms
Bezpieczeństwo jest ważne we wszystkich krokach tworzenia aplikacji. Zacznij od przejrzenia i zapoznania się z wytycznymi dotyczącymi bezpiecznego kodowania .
Następnie zdecyduj, czy aplikacja musi działać w pełnym zaufaniu, czy też powinna działać w częściowym zaufaniu. Uruchomienie aplikacji w pełnym zaufaniu ułatwia dostęp do zasobów na komputerze lokalnym, ale naraża aplikację i jej użytkowników na wysokie ryzyko bezpieczeństwa, jeśli nie projektujesz i opracowujesz aplikacji ściśle zgodnie z zasadami opisanymi w 'Wytycznych dotyczących bezpiecznego kodowania'. Uruchamianie aplikacji w częściowym zaufaniu ułatwia opracowywanie bezpieczniejszej aplikacji i zmniejsza duże ryzyko, ale wymaga większego planowania w zakresie implementowania niektórych funkcji.
Jeśli wybierzesz opcję częściowego zaufania (czyli zestawy uprawnień Internet lub Lokalny intranet), zdecyduj, jak aplikacja ma zachowywać się w tym środowisku. Formularze systemu Windows zapewniają alternatywne, bezpieczniejsze sposoby implementowania funkcji w środowisku częściowo zaufanym. Niektóre części aplikacji, takie jak dostęp do danych, można zaprojektować i napisać inaczej zarówno dla środowisk częściowego zaufania, jak i pełnego zaufania. Niektóre funkcje formularzy systemu Windows, takie jak ustawienia aplikacji, są przeznaczone do pracy w częściowym zaufaniu. Aby uzyskać więcej informacji, zobacz Ustawienia aplikacji — omówienie.
Jeśli aplikacja wymaga większej liczby uprawnień niż zezwala na częściowe zaufanie, ale nie chcesz uruchamiać w pełnym zaufaniu, możesz uruchomić w częściowym zaufaniu, jednocześnie twierdząc tylko te dodatkowe uprawnienia, których potrzebujesz. Jeśli na przykład chcesz uruchomić w częściowym zaufaniu, ale musisz przyznać aplikacji dostęp tylko do odczytu do katalogu w systemie plików użytkownika, możesz zażądać FileIOPermission tylko dla tego katalogu. To podejście umożliwia zwiększenie funkcjonalności aplikacji i zminimalizowanie zagrożeń bezpieczeństwa dla użytkowników.
Podczas tworzenia aplikacji, która będzie działać w częściowym zaufaniu, należy śledzić uprawnienia, które aplikacja musi uruchomić i jakie uprawnienia może opcjonalnie używać aplikacja. Gdy wszystkie uprawnienia są znane, należy wysłać żądanie deklaratywne dla uprawnień na poziomie aplikacji. Żądanie uprawnień informuje środowisko uruchomieniowe .NET Framework o uprawnieniach, których potrzebuje aplikacja, oraz o uprawnieniach, z których chce zrezygnować. Aby uzyskać więcej informacji na temat żądania uprawnień, zobacz Żądanie uprawnień.
Jeśli żądasz opcjonalnych uprawnień, musisz obsługiwać wyjątki zabezpieczeń, które zostaną wygenerowane, jeśli aplikacja wykonuje akcję, która wymaga uprawnień, które nie zostaną mu przyznane. Odpowiednia obsługa SecurityException zapewni, że aplikacja będzie mogła nadal działać. Aplikacja może użyć wyjątku, aby określić, czy funkcja powinna zostać wyłączona dla użytkownika. Na przykład aplikacja może wyłączyć opcję menu Zapisz , jeśli nie udzielono wymaganych uprawnień do pliku.
Czasami trudno jest wiedzieć, czy przydzieliłeś wszystkie odpowiednie uprawnienia. Wywołanie metody, które na pierwszy rzut oka wygląda nieszkodliwie, na przykład może uzyskać dostęp do systemu plików w pewnym momencie podczas wykonywania. Jeśli aplikacja nie zostanie wdrożona ze wszystkimi wymaganymi uprawnieniami, może być testowana prawidłowo podczas debugowania jej na pulpicie, ale po wdrożeniu zakończy się niepowodzeniem. Zarówno zestaw .NET Framework 2.0 SDK, jak i program Visual Studio 2005 zawierają narzędzia do obliczania uprawnień wymaganych przez aplikację: narzędzie wiersza polecenia MT.exe i funkcję Calculate Permissions programu Visual Studio.
W poniższych tematach opisano dodatkowe funkcje zabezpieczeń formularzy systemu Windows.
Temat | Opis |
---|---|
- Bardziej bezpieczny dostęp do plików i danych w Windows Forms | Opisuje, jak uzyskać dostęp do plików i danych w środowisku częściowego zaufania. |
- Bezpieczniejsze drukowanie w Windows Forms | Opisuje sposób uzyskiwania dostępu do funkcji drukowania w środowisku częściowego zaufania. |
- Dodatkowe zagadnienia dotyczące zabezpieczeń w Formularzach systemu Windows | Opisuje wykonywanie manipulowania oknami przy użyciu Schowka i wykonywanie wywołań kodu niezarządzanego w środowisku częściowego zaufania. |
Wdrażanie aplikacji z odpowiednimi uprawnieniami
Najbardziej popularnym sposobem wdrażania aplikacji Windows Forms na komputerze klienckim jest ClickOnce, technologia wdrożeniowa, która opisuje wszystkie składniki potrzebne do uruchomienia aplikacji. ClickOnce używa plików XML nazywanych manifestami, aby opisać zestawy i pliki tworzące aplikację, a także uprawnienia wymagane przez aplikację.
ClickOnce ma dwie technologie do żądania podwyższonych uprawnień na komputerze klienckim. Obie technologie korzystają z certyfikatów Authenticode. Certyfikaty pomagają zapewnić użytkownikom pewność, że aplikacja pochodzi z zaufanego źródła.
W poniższej tabeli opisano te technologie.
Technologia podwyższonych uprawnień | Opis |
---|---|
Podniesienie uprawnień | Powoduje wyświetlenie okna dialogowego zabezpieczeń przy pierwszym uruchomieniu aplikacji. Okno dialogowe podniesienia uprawnień uprawnień informuje użytkownika o tym, kto opublikował aplikację, dzięki czemu użytkownik może podjąć świadomą decyzję o tym, czy przyznać mu dodatkowe zaufanie |
Wdrażanie zaufanej aplikacji | Polega na tym, że administrator systemu przeprowadza jednorazową instalację certyfikatu Authenticode wydawcy na komputerze klienckim. Od tego momentu wszystkie aplikacje podpisane za pomocą certyfikatu są uznawane za zaufane i mogą działać w pełnym zaufaniu na komputerze lokalnym bez dodatkowego monitu. |
Wybrana technologia zależy od środowiska wdrażania. Aby uzyskać więcej informacji, zobacz Wybieranie strategii wdrażania ClickOnce.
Domyślnie aplikacje ClickOnce wdrożone przy użyciu programu Visual Studio lub narzędzi zestawu .NET Framework SDK (Mage.exe i MageUI.exe) są skonfigurowane do uruchamiania na komputerze klienckim z pełnym zaufaniem. Jeśli wdrażasz aplikację przy użyciu częściowego zaufania lub tylko niektórych dodatkowych uprawnień, musisz zmienić tę wartość domyślną. Można to zrobić za pomocą programu Visual Studio lub narzędzia .NET Framework SDK MageUI.exe podczas konfigurowania wdrożenia. Aby uzyskać więcej informacji na temat używania MageUI.exe, zobacz przewodnik : Ręczne wdrażanie aplikacji ClickOnce. Zobacz również Jak: Ustawić niestandardowe uprawnienia dla aplikacji ClickOnce lub Jak: Ustawić niestandardowe uprawnienia dla aplikacji ClickOnce.
Aby uzyskać więcej informacji na temat aspektów zabezpieczeń technologii ClickOnce i podniesienia uprawnień, zobacz Zabezpieczanie aplikacji ClickOnce. Aby uzyskać więcej informacji na temat wdrażania zaufanych aplikacji, zobacz Omówienie wdrażania zaufanych aplikacji.
Testowanie aplikacji
Jeśli aplikacja Windows Forms została wdrożona przy użyciu programu Visual Studio, możesz włączyć debugowanie w częściowym zaufaniu lub ograniczonym zestawie uprawnień ze środowiska deweloperskiego. Zobacz również Instrukcje: jak debugować aplikację ClickOnce z ograniczonymi uprawnieniami.
Zobacz też
- zabezpieczeń formularzy systemu Windows
- Podstawowe informacje dotyczące zabezpieczeń dostępu do kodu
- Zabezpieczenia i wdrażanie technologii ClickOnce
- Omówienie wdrażania zaufanych aplikacji
- Mage.exe (narzędzie generowania i edytowania manifestu)
- MageUI.exe (narzędzie generowania i edytowania manifestu, klient graficzny)
.NET Desktop feedback