Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
ClickOnce-Anwendungen unterliegen Codezugriffssicherheitseinschränkungen im .NET Framework, um den Zugriff auf geschützte Ressourcen und Vorgänge zu begrenzen. Aus diesem Grund ist es wichtig, dass Sie die Auswirkungen der Codezugriffssicherheit verstehen, um Ihre ClickOnce-Anwendungen entsprechend zu schreiben. Ihre Anwendungen können Vollvertrauen nutzen oder partielle Zonen wie die Internet- und Intranetzonen verwenden, um den Zugriff einzuschränken.
Darüber hinaus verwendet ClickOnce Zertifikate, um die Echtheit des Herausgebers der Anwendung zu überprüfen und die Anwendungs- und Bereitstellungsmanifeste zu signieren, um zu beweisen, dass die Dateien nicht manipuliert wurden. Das Signieren ist ein optionaler Schritt, der es einfacher macht, die Anwendungsdateien zu ändern, nachdem die Manifeste generiert wurden. Ohne signierte Manifeste ist es jedoch schwierig sicherzustellen, dass das Anwendungsinstallationsprogramm in Man-in-the-Middle-Sicherheitsangriffen nicht manipuliert wird. Aus diesem Grund wird empfohlen, Ihre Anwendungs- und Bereitstellungsmanifeste zu signieren, um Ihre Anwendungen zu schützen.
Zonen
Anwendungen, die mithilfe der ClickOnce-Technologie bereitgestellt werden, sind auf eine Reihe von Berechtigungen und Aktionen beschränkt, die von der Sicherheitszone definiert werden. Sicherheitszonen werden im Browser definiert und basieren auf dem Speicherort der Anwendung. In der folgenden Tabelle sind die Standardberechtigungen basierend auf dem Bereitstellungsort aufgeführt:
| Bereitstellungsort | Sicherheitszone |
|---|---|
| Aus dem Web ausführen | Internetzone |
| Aus dem Web installieren | Internetzone |
| Installieren aus der Netzwerkdateifreigabe | Lokale Intranetzone |
| Installation aus CD-ROM | Volles Vertrauen |
Die Standardberechtigungen basieren auf dem Speicherort, an dem die ursprüngliche Version der Anwendung bereitgestellt wurde. Updates für die Anwendung erben diese Berechtigungen. Wenn die Anwendung so konfiguriert ist, dass sie Updates von einem Web- oder Netzwerkspeicherort überprüft und eine neuere Version verfügbar ist, kann die ursprüngliche Installation Berechtigungen für die Internet- oder Intranetzone anstelle von vollständigen Vertrauensberechtigungen erhalten. Um zu verhindern, dass Benutzer dazu aufgefordert werden, kann ein Systemadministrator eine ClickOnce-Bereitstellungsrichtlinie angeben, die einen bestimmten Anwendungsherausgeber als vertrauenswürdige Quelle definiert. Für Computer, auf denen diese Richtlinie bereitgestellt wird, werden Berechtigungen automatisch erteilt, und der Benutzer wird nicht aufgefordert. Weitere Informationen finden Sie unter "Übersicht über die Bereitstellung vertrauenswürdiger Anwendungen". Um die Bereitstellung vertrauenswürdiger Anwendungen zu konfigurieren, kann das Zertifikat auf Computer- oder Unternehmensebene installiert werden. Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen eines vertrauenswürdigen Herausgebers zu einem Client-Computer für ClickOnce-Anwendungen.
Hinweis
In ClickOnce für .NET Core und .NET 5 oder höher wird dieses Feature nicht unterstützt. Weitere Informationen finden Sie unter ClickOnce für .NET.
Codezugriffssicherheitsrichtlinien
Berechtigungen für eine Anwendung werden durch die Einstellungen im <TrustInfo-Element> des Anwendungsmanifests bestimmt. Visual Studio generiert diese Informationen automatisch basierend auf den Einstellungen auf der Sicherheitseigenschaftsseite des Projekts. Eine ClickOnce-Anwendung erhält nur die spezifischen Berechtigungen, die sie anfordert. Wenn für den Dateizugriff beispielsweise Vollvertrauensberechtigungen erforderlich sind, wird der Anwendung nur die Dateizugriffsberechtigung und nicht die Vollvertrauensberechtigungen erteilt, wenn sie dies anfordert. Beim Entwickeln Ihrer ClickOnce-Anwendung sollten Sie sicherstellen, dass Sie nur die spezifischen Berechtigungen anfordern, die die Anwendung benötigt. In den meisten Fällen können Sie die Internet- oder lokalen Intranetzonen verwenden, um Ihre Anwendung auf eine teilweise vertrauenswürdige Anwendung zu beschränken. Weitere Informationen finden Sie unter How to: Set a security zone for a ClickOnce application. Wenn Ihre Anwendung benutzerdefinierte Berechtigungen benötigt, können Sie eine benutzerdefinierte Zone erstellen. Weitere Informationen finden Sie unter Anleitung: Benutzerdefinierte Berechtigungen für eine ClickOnce-Anwendung festlegen.
Hinweis
In ClickOnce für .NET Core und .NET 5 oder höher wird die Codezugriffssicherheit nicht unterstützt. In .NET Framework ist die Verwendung von Code Access Security keine bewährte Methode und wird nicht empfohlen.
Das Einschließen einer Berechtigung, die nicht Teil des Standardberechtigungssatzes für die Zone ist, aus der die Anwendung bereitgestellt wird, führt dazu, dass der Endbenutzer aufgefordert wird, die Berechtigung zur Installation oder Aktualisierung zu erteilen. Um zu verhindern, dass Benutzer dazu aufgefordert werden, kann ein Systemadministrator eine ClickOnce-Bereitstellungsrichtlinie angeben, die einen bestimmten Anwendungsherausgeber als vertrauenswürdige Quelle definiert. Auf Computern, auf denen diese Richtlinie bereitgestellt wird, werden automatisch Berechtigungen erteilt, und der Benutzer wird nicht aufgefordert.
Als Entwickler ist es Ihre Verantwortung, sicherzustellen, dass Ihre Anwendung mit den entsprechenden Berechtigungen ausgeführt wird. Wenn die Anwendung Berechtigungen außerhalb einer Zone während der Laufzeit anfordert, wird möglicherweise eine Sicherheits ausnahme angezeigt. Mit Visual Studio können Sie Ihre Anwendung in der Zielsicherheitszone debuggen und Hilfe beim Entwickeln sicherer Anwendungen bereitstellen. Weitere Informationen finden Sie unter Debug ClickOnce-Apps, die System.Deployment.Application verwenden.
Weitere Informationen zur Codezugriffssicherheit und ClickOnce finden Sie unter Codezugriffssicherheit für ClickOnce-Anwendungen.
Codesignaturzertifikate
Wenn Sie eine Anwendung mithilfe der ClickOnce-Bereitstellung veröffentlichen möchten, können Sie die Anwendungs- und Bereitstellungsmanifeste für die Anwendung mit einem öffentlichen/privaten Schlüsselpaar signieren. Die Tools zum Signieren eines Manifests stehen auf der Signaturseite des Project-Designers zur Verfügung. Weitere Informationen finden Sie unter Signaturseite, Project Designer.
Nachdem die Manifeste signiert wurden, werden die Herausgeberinformationen basierend auf der Authenticode-Signatur dem Benutzer während der Installation im Dialogfeld "Berechtigungen" angezeigt, um dem Benutzer anzuzeigen, dass die Anwendung von einer vertrauenswürdigen Quelle stammt.
Weitere Informationen zu ClickOnce und Zertifikaten finden Sie unter ClickOnce und Authenticode.
ASP.NET formularbasierte Authentifizierung
Wenn Sie steuern möchten, auf welche Bereitstellungen jeder Benutzer zugreifen kann, sollten Sie keinen anonymen Zugriff auf ClickOnce-Anwendungen aktivieren, die auf einem Webserver bereitgestellt werden. Stattdessen würden Sie Benutzern den Zugriff auf die Bereitstellungen ermöglichen, die Sie basierend auf der Identität eines Benutzers mithilfe der Windows-Authentifizierung installiert haben.
ClickOnce unterstützt ASP.NET formularbasierte Authentifizierung nicht, da sie persistente Cookies verwendet; diese stellen ein Sicherheitsrisiko dar, da sie sich im Browsercache befinden und gehackt werden können. Wenn Sie ClickOnce-Anwendungen bereitstellen, wird daher jedes Authentifizierungsszenario neben der Windows-Authentifizierung nicht unterstützt.
Übergeben von Argumenten
Eine zusätzliche Sicherheitsüberlegung tritt auf, wenn Sie Argumente an eine ClickOnce-Anwendung übergeben müssen. ClickOnce ermöglicht Entwicklern das Bereitstellen einer Abfragezeichenfolge für Anwendungen, die über das Web bereitgestellt werden. Die Abfragezeichenfolge verwendet die Form einer Reihe von Name-Wert-Paaren am Ende der URL, die zum Starten der Anwendung verwendet wird:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
Standardmäßig sind Abfragezeichenfolgenargumente deaktiviert. Um sie zu aktivieren, muss das Attribut trustUrlParameters im Bereitstellungsmanifest der Anwendung festgelegt werden. Dieser Wert kann aus Visual Studio und aus MageUI.exefestgelegt werden. Ausführliche Schritte zum Aktivieren der Übergabe von Abfragezeichenfolgen finden Sie unter How to: Retrieve query string information in an online ClickOnce application.
Sie sollten niemals Argumente übergeben, die über eine Abfragezeichenfolge an eine Datenbank oder an die Befehlszeile abgerufen werden, ohne die Argumente zu überprüfen, um sicherzustellen, dass sie sicher sind. Unsichere Argumente sind solche, die Datenbank- oder Befehlszeilen-Escapezeichen enthalten, die es einem böswilligen Benutzer ermöglichen könnten, Ihre Anwendung in die Ausführung beliebiger Befehle zu bearbeiten.
Hinweis
Abfragezeichenfolgenargumente sind die einzige Möglichkeit, Argumente an eine ClickOnce-Anwendung beim Start zu übergeben. Sie können argumente nicht über die Befehlszeile an eine ClickOnce-Anwendung übergeben.
Bereitstellen verschleierter Assemblys
Visual Studio enthält die kostenlose PreEmptive Protection - Dotfuscator Community, die Sie verwenden können, um Ihre ClickOnce-Anwendungen durch Codeverschleierung und aktive Schutzmaßnahmen zu schützen. Ausführliche Informationen finden Sie im ClickOnce-Abschnitt des Dotfuscator Community-Benutzerhandbuchs.