Zabezpieczanie aplikacji ClickOnce

Aplikacje ClickOnce podlegają ograniczeniom zabezpieczeń dostępu do kodu w programie .NET Framework, aby ograniczyć dostęp do tego kodu do chronionych zasobów i operacji. Z tego powodu ważne jest, aby zrozumieć implikacje zabezpieczeń dostępu do kodu, aby odpowiednio napisać aplikacje ClickOnce. W celu ograniczenia dostępu aplikacje mogą używać pełnego zaufania lub stref częściowych, takich jak strefy Internet i Intranet.

Ponadto technologia ClickOnce używa certyfikatów w celu weryfikowania autentyczności wydawcy aplikacji oraz podpisywania aplikacji i manifestów wdrożenia, co ma na celu zagwarantowanie, że pliki nie zostały w nieuprawniony sposób zmodyfikowane. Podpisywanie to opcjonalny krok, który ułatwia zmienianie plików aplikacji po wygenerowaniu manifestów. Jednak bez podpisanych manifestów trudno jest zagwarantować, że instalator aplikacji nie zostanie zmodyfikowany w wyniku ataku przeprowadzonego przez osobę z wewnątrz organizacji. Z tego powodu zaleca się podpisywanie aplikacji i manifestów wdrożenia, ponieważ pomaga to w zabezpieczaniu aplikacji.

Strefy

Aplikacje wdrażane przy użyciu technologii ClickOnce są ograniczone do zestawu uprawnień i akcji zdefiniowanych przez strefę zabezpieczeń. Strefy zabezpieczeń są zdefiniowane w programie Internet Explorer i są oparte na lokalizacji aplikacji. W poniższej tabeli wymieniono uprawnienia domyślne określone na podstawie lokalizacji wdrożenia:

Lokalizacja wdrożenia Strefa zabezpieczeń
Uruchamianie z sieci Web Strefa Internet
Instalacja z sieci Web Strefa Internet
Instalacja z sieciowego udziału plików Strefa Lokalny intranet
Instalacja z dysku CD-ROM Pełne zaufanie

Uprawnienia domyślne są określane na podstawie lokalizacji, z której została wdrożona oryginalna wersja aplikacji; aktualizacje aplikacji będą dziedziczyć te uprawnienia. Jeśli aplikacja jest skonfigurowana do sprawdzania, czy w sieci Web lub lokalizacji sieciowej są dostępne aktualizacje, oryginalna instalacja może otrzymać uprawienia dla strefy Internet lub Intranet, a nie uprawnienia pełnego zaufania. Aby zapobiec monitowaniu użytkowników, administrator systemu może określić zasady wdrażania technologii ClickOnce definiujące określonego wydawcę aplikacji jako zaufane źródło. Na komputerach, na których zostaną wdrożone te zasady, uprawnienia będą udzielane automatycznie i użytkownicy nie będą monitowani. Aby uzyskać więcej informacji, zobacz Omówienie zaufanego wdrażania aplikacji. Aby skonfigurować zaufane wdrożenie aplikacji, certyfikat można zainstalować na poziomie komputera lub przedsiębiorstwa. Aby uzyskać więcej informacji, zobacz How to: Add a Trusted Publisher to a Client Computer for ClickOnce Applications (Jak dodać zaufanego wydawcę do komputera klienckiego dla aplikacji ClickOnce).

Uwaga

W technologii ClickOnce dla platform .NET Core i .NET 5 lub nowszych ta funkcja nie jest obsługiwana. Aby uzyskać więcej informacji, zobacz ClickOnce dla platformy .NET.

Zasady zabezpieczeń dostępu kodu

Uprawnienia dla aplikacji są określane przez ustawienia w <elemecie trustInfo> Element manifestu aplikacji. Program Visual Studio automatycznie generuje te informacje na podstawie ustawień na stronie właściwości Zabezpieczenia projektu. Aplikacja ClickOnce ma przyznane tylko określone uprawnienia, których żąda. Na przykład w sytuacji, gdy dostęp do plików wymaga uprawnień pełnego zaufania, a aplikacja żąda uprawnienia dostępu do pliku, zostanie jej udzielone tylko uprawnienie dostępu do plików, a nie uprawnienia pełnego zaufania. Podczas tworzenia aplikacji ClickOnce upewnij się, że żądasz tylko określonych uprawnień wymaganych przez aplikację. W większości przypadków można użyć stref Internet lub Lokalny intranet, aby ograniczyć aplikację do częściowego zaufania. Aby uzyskać więcej informacji, zobacz How to: Set a security zone for a ClickOnce application (Instrukcje: ustawianie strefy zabezpieczeń dla aplikacji ClickOnce). Jeśli aplikacja wymaga uprawnień niestandardowych, można utworzyć strefę niestandardową. Aby uzyskać więcej informacji, zobacz How to: Set custom permissions for a ClickOnce application (Instrukcje: ustawianie uprawnień niestandardowych dla aplikacji ClickOnce).

Uwaga

W technologii ClickOnce dla platform .NET Core i .NET 5 lub nowszych ta funkcja nie jest obsługiwana. Aby uzyskać więcej informacji, zobacz ClickOnce dla platformy .NET.

Dołączenie uprawnienia, które nie wchodzi w skład domyślnego zestawu uprawnień dla strefy, z której została wdrożona aplikacja, spowoduje, że użytkownik końcowy będzie w czasie instalacji lub aktualizacji monitowany o udzielenie uprawnienia. Aby zapobiec monitowaniu użytkowników, administrator systemu może określić zasady wdrażania technologii ClickOnce definiujące określonego wydawcę aplikacji jako zaufane źródło. Na komputerach, na których zostaną wdrożone te zasady, uprawnienia będą udzielane automatycznie i użytkownicy nie będą monitowani.

Deweloper jest odpowiedzialny za zagwarantowanie, że jego aplikacja będzie działać z odpowiednimi uprawnieniami. Jeśli aplikacja w czasie wykonywania zażąda uprawnień spoza strefy, może wystąpić wyjątek zabezpieczeń. Program Visual Studio umożliwia debugowanie aplikacji w docelowej strefie zabezpieczeń i zapewnia pomoc w tworzeniu bezpiecznych aplikacji. Aby uzyskać więcej informacji, zobacz Debugowanie aplikacji ClickOnce korzystających z elementu System.Deployment.Application.

Aby uzyskać więcej informacji na temat zabezpieczeń dostępu kodu i technologii ClickOnce, zobacz Zabezpieczenia dostępu kodu dla aplikacji ClickOnce.

Certyfikaty podpisywania kodu

Aby opublikować aplikację przy użyciu wdrożenia technologii ClickOnce, możesz podpisać manifesty aplikacji i wdrożenia dla aplikacji przy użyciu pary kluczy publicznych/prywatnych. Narzędzia do podpisywania manifestu są dostępne na stronie Podpisywanie Projektant projektu. Aby uzyskać więcej informacji, zobacz Strona podpisywania, projekt Projektant.

Po podpisaniu manifestów informacje o wydawcy określone na podstawie podpisu Authenticode będą wyświetlane użytkownikowi w oknie dialogowym uprawnień podczas instalacji, aby pokazać mu, że aplikacja pochodzi z zaufanego źródła.

Aby uzyskać więcej informacji na temat technologii ClickOnce i certyfikatów, zobacz ClickOnce i Authenticode.

ASP.NET uwierzytelnianie oparte na formularzach

Jeśli chcesz kontrolować, do których wdrożeń może uzyskiwać dostęp każdy użytkownik, nie należy włączać dostępu anonimowego do aplikacji ClickOnce wdrożonych na serwerze sieci Web. Zamiast tego należy umożliwić użytkownikom dostęp do zainstalowanych wdrożeń na podstawie tożsamości użytkownika, używając uwierzytelniania systemu Windows.

Technologia ClickOnce nie obsługuje uwierzytelniania opartego na formularzach ASP.NET, ponieważ używa trwałych plików cookie; stanowią one zagrożenie bezpieczeństwa, ponieważ znajdują się w pamięci podręcznej programu Internet Explorer i mogą zostać zhakowane. W związku z tym, jeśli wdrażasz aplikacje ClickOnce, każdy scenariusz uwierzytelniania oprócz uwierzytelniania systemu Windows jest nieobsługiwany.

Przekazywanie argumentów

W przypadku konieczności przekazania argumentów do aplikacji ClickOnce należy wziąć pod uwagę dodatkowe zabezpieczenia. Technologia ClickOnce umożliwia deweloperom dostarczanie ciągu zapytania do aplikacji wdrożonych za pośrednictwem sieci Web. Ciąg zapytania ma formę serii par nazwa-wartość umieszczonych na końcu adresu URL używanego do uruchamiania aplikacji:

http://servername.adatum.com/WindowsApp1.application?username=joeuser

Domyślnie argumenty ciągu zapytania są wyłączone. Aby je włączyć, należy ustawić atrybut trustUrlParameters w manifeście wdrożenia aplikacji. Tę wartość można ustawić z poziomu programu Visual Studio i z pliku MageUI.exe. Aby uzyskać szczegółowe instrukcje dotyczące włączania przekazywania ciągów zapytania, zobacz How to: Retrieve query string information in an online ClickOnce application (Instrukcje: pobieranie informacji o ciągu zapytania w aplikacji ClickOnce online).

Nigdy nie należy przekazywać argumentów odebranych za pośrednictwem ciągu zapytania do bazy danych lub wiersza polecenia bez sprawdzenia, czy argumenty są bezpieczne. Argumentami niebezpiecznymi są argumenty zawierające znaki ucieczki bazy danych lub wiersza polecenia, które mogłyby umożliwić złośliwemu użytkownikowi „zmuszenie” aplikacji do wykonywania dowolnie wybranych przez niego poleceń.

Uwaga

Argumenty ciągu zapytania to jedyny sposób przekazywania argumentów do aplikacji ClickOnce podczas uruchamiania. Nie można przekazać argumentów do aplikacji ClickOnce z wiersza polecenia.

Wdrażanie zaciemnionych zestawów

Program Visual Studio obejmuje bezpłatną ochronę przed zabezpieczeniami — Dotfuscator Community, której można użyć do ochrony aplikacji ClickOnce za pomocą zaciemniania kodu i aktywnych środków ochrony. Aby uzyskać szczegółowe informacje, zobacz sekcję ClickOnce przewodnika użytkownika społeczności programu Dotfuscator.