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 do weryfikowania autentyczności wydawcy aplikacji oraz podpisywania manifestów aplikacji i wdrażania w celu potwierdzenia, że pliki nie zostały naruszone. Podpisywanie to opcjonalny krok, który ułatwia zmienianie plików aplikacji po wygenerowaniu manifestów. Jednak bez podpisanych manifestów trudno jest upewnić się, że instalator aplikacji nie jest naruszony w atakach zabezpieczeń typu man-in-the-middle. 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ą definiowane w przeglądarce 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. W przypadku komputerów, na których wdrożono te zasady, uprawnienia zostaną przyznane automatycznie, a użytkownik nie będzie monitowany. 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 jest częścią domyślnego zestawu uprawnień dla strefy, z której wdrożono aplikację, spowoduje wyświetlenie monitu użytkownika końcowego o udzielenie uprawnień w czasie instalacji lub aktualizacji. 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 te zasady są wdrażane, uprawnienia zostaną automatycznie przyznane, a użytkownik nie będzie monitowany.
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 projektanta projektu. Aby uzyskać więcej informacji, zobacz Strona podpisywania, Project Designer.
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 przeglądarki i mogą zostać zhakowane. W związku z tym, jeśli wdrażasz aplikacje ClickOnce, każdy scenariusz uwierzytelniania oprócz uwierzytelniania systemu Windows nie jest obsł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 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 pobranych za pośrednictwem ciągu zapytania do bazy danych lub wiersza polecenia bez sprawdzania argumentów, aby upewnić się, że są one 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.