Przegląd zabezpieczeń w formularzach systemu Windows

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 o silnych nazwach, 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 Dowody. 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 Kluczowe pojęcia dotyczące zabezpieczeń i Podstawy zabezpieczeń dostępu kodu.

Jeśli użytkownik uruchamia plik wykonywalny windows Forms bezpośrednio z serwera sieci Web lub udziału plików, stopień zaufania udzielony 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 ustawiony zestaw uprawnień Pełne zaufanie, kod z sieci lokalnej otrzymuje zestaw uprawnień Lokalny intranet, a kod z Internetu ma zestaw uprawnień Internet.

Uwaga

W programie .NET Framework w wersji 1.0 z dodatkiem Service Pack 1 i Dodatkiem 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.

Domyślne uprawnienia 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 przestrzegania wytycznych dotyczących 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 uwidacznia aplikację i jej użytkowników przed wysokim ryzykiem bezpieczeństwa, jeśli nie projektujesz i opracowujesz aplikację ściśle zgodnie z tematem Wytyczne dotyczące 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 Application Ustawienia Overview (Omówienie usługi Application Ustawienia).

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 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 czas wykonywania programu .NET Framework o uprawnieniach, których potrzebuje aplikacja, oraz o uprawnieniach, których konkretnie nie chce. 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 tego SecurityException obiektu 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 masz potwierdzenia wszystkich odpowiednich uprawnień. Wywołanie metody, które wygląda nieszkodliwie na powierzchni, 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ędzia wiersza polecenia MT.exe i funkcji Obliczeniowe uprawnienia programu Visual Studio.

W poniższych tematach opisano dodatkowe funkcje zabezpieczeń formularzy systemu Windows.

Temat opis
- Bezpieczniejszy dostęp do plików i danych w formularzach Windows Forms Opisuje sposób uzyskiwania dostępu do plików i danych w środowisku częściowo zaufania.
- Bezpieczniejsze drukowanie w formularzach Windows Forms Opisuje sposób uzyskiwania dostępu do funkcji drukowania w środowisku częściowo zaufania.
- Dodatkowe zagadnienia z zakresu zabezpieczeń dotyczące formularzy Windows Forms 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 typowym sposobem wdrażania aplikacji Windows Forms na komputerze klienckim jest technologia wdrażania ClickOnce, która opisuje wszystkie składniki, których aplikacja musi uruchomić. 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 uprawnień z podwyższonym poziomem uprawnień opis
Podniesienie uprawnień Monituje użytkownika o okno dialogowe zabezpieczeń przy pierwszym uruchomieniu aplikacji. Okno dialogowe Podniesienie 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 Technologii ClickOnce.

Domyślnie aplikacje ClickOnce wdrożone przy użyciu programu Visual Studio lub narzędzi zestawu SDK programu .NET Framework (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 korzystania z narzędzia MageUI.exe, zobacz Przewodnik: ręczne wdrażanie aplikacji ClickOnce. Zobacz również Instrukcje: ustawianie uprawnień niestandardowych dla aplikacji ClickOnce lub Instrukcje: ustawianie uprawnień niestandardowych 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: debugowanie aplikacji ClickOnce z ograniczonymi uprawnieniami.

Zobacz też