Zabezpečení aplikací ClickOnce

Aplikace ClickOnce podléhají omezením zabezpečení přístupu kódu v rozhraní .NET Framework, která pomáhají omezit přístup, který má kód k chráněným prostředkům a operacím. Z tohoto důvodu je důležité pochopit důsledky zabezpečení přístupu kódu k zápisu aplikací ClickOnce odpovídajícím způsobem. K omezení přístupu mohou vaše aplikace používat plnou důvěryhodnost nebo částečné zóny, jako jsou zóny pro Internet a Intranet.

Dále lze použít technologii ClickOnce využívající certifikáty k ověření pravosti vydavatele a podepisování manifestů aplikace a nasazení, která ověřuje, zda se soubory nebylo manipulováno. Podepisování je volitelný krok, který usnadňuje změnu souborů aplikace po vytvoření manifestů. Bez podepsaných manifestů je však obtížné zajistit, aby nebylo s instalačním programem manipulováno při bezpečnostních útocích prostředníkem. Chcete-li aplikaci zabezpečit, doporučujeme vám, abyste podepsali manifesty aplikace a nasazení.

Zóny

Aplikace nasazené pomocí technologie ClickOnce jsou omezené na sadu oprávnění a akcí definovaných zónou zabezpečení. Zóny zabezpečení jsou definovány v aplikaci Internet Explorer a jsou založeny na umístění aplikace. V následující tabulce jsou uvedena výchozí oprávnění na základě umístění nasazení:

Umístění nasazení Zóna zabezpečení
Spuštění z webu Zóna Internetu
Instalace z webu Zóna Internetu
Instalace ze sdíleného síťového umístění Zóna Místního intranetu
Instalace z disku CD-ROM Plná důvěryhodnost

Výchozí oprávnění jsou založena na umístění, ze kterého byla nasazena původní verze aplikace; aktualizace aplikace tato oprávnění zdědí. Pokud je aplikace nakonfigurována pro vyhledání aktualizací z webového nebo síťového umístění a je k dispozici novější verze, mohou původní instalace namísto oprávnění plné důvěryhodnosti přijímat oprávnění pro zónu Internetu nebo Intranetu. Chcete-li zabránit v zobrazování výzev uživatelům, může správce systému zadat zásady nasazení technologie ClickOnce, které definují konkrétního vydavatele aplikace jako důvěryhodný zdroj. Pro počítače, na kterých je tato zásada nasazena, budou oprávnění udělena automaticky a uživateli nebude zobrazena žádná výzva. Další informace naleznete v tématu Přehled nasazení důvěryhodné aplikace. Chcete-li konfigurovat nasazení důvěryhodné aplikace, lze certifikát nainstalovat na úrovni počítače nebo podniku. Další informace naleznete v tématu Postupy: Přidání důvěryhodného vydavatele do klientského počítače pro aplikace ClickOnce.

Poznámka:

V ClickOnce pro .NET Core a .NET 5 nebo novější není tato funkce podporována. Další informace naleznete v tématu ClickOnce pro .NET.

Zásady zabezpečení přístupu kódu

Oprávnění pro aplikaci jsou určena nastavením v <elementu trustInfo> elementu manifestu aplikace. Visual Studio tyto informace automaticky vygeneruje na základě nastavení na stránce vlastností zabezpečení projektu. Aplikace ClickOnce má udělená pouze konkrétní oprávnění, která požaduje. V případech, kdy například přístup k souborům vyžaduje oprávnění plné důvěryhodnosti, pokud aplikace požaduje oprávnění přístupu k souborům, bude uděleno pouze oprávnění přístupu k souborům, nikoli oprávnění plné důvěryhodnosti. Při vývoji aplikace ClickOnce byste měli zajistit, že požadujete pouze konkrétní oprávnění, která aplikace potřebuje. Ve většině případů můžete nastavit omezení aplikace na částečnou důvěryhodnost pomocí zóny Internetu a Místního intranetu. Další informace naleznete v tématu Postupy: Nastavení zóny zabezpečení pro aplikaci ClickOnce. Pokud aplikace požaduje vlastní oprávnění, můžete vytvořit vlastní zónu. Další informace naleznete v tématu Postupy: Nastavení vlastních oprávnění pro aplikaci ClickOnce.

Poznámka:

V ClickOnce pro .NET Core a .NET 5 nebo novější není tato funkce podporována. Další informace naleznete v tématu ClickOnce pro .NET.

Pokud použijete oprávnění, které není součástí výchozího oprávnění nastaveného pro zónu, ze které je aplikace nasazena, zobrazí se koncovému uživateli při instalaci nebo aktualizaci výzva k udělení oprávnění. Chcete-li zabránit v zobrazování výzev uživatelům, může správce systému zadat zásady nasazení technologie ClickOnce, které definují konkrétního vydavatele aplikace jako důvěryhodný zdroj. Na počítačích, na kterých je tato zásada nasazena, budou oprávnění udělena automaticky a uživateli nebude zobrazena žádná výzva.

Jako vývojář se musíte přesvědčit, zda lze aplikaci spustit i s příslušnými oprávněními. Pokud aplikace po spuštění požádá o oprávnění mimo zónu, může se zobrazit výjimka zabezpečení. Visual Studio umožňuje ladit aplikaci v cílové zóně zabezpečení a poskytuje pomoc při vývoji zabezpečených aplikací. Další informace naleznete v tématu Ladění aplikací ClickOnce, které používají System.Deployment.Application.

Další informace o zabezpečení přístupu kódu a ClickOnce naleznete v tématu Zabezpečení přístupu kódu pro aplikace ClickOnce.

Podpisové certifikáty kódu

Pokud chcete publikovat aplikaci pomocí nasazení ClickOnce, můžete podepsat manifesty aplikace a nasazení aplikace pomocí páru veřejného a privátního klíče. Nástroje pro podepsání manifestu jsou k dispozici na stránce Podepisování návrháře projektu. Další informace naleznete v tématu Podpisová stránka, Návrhář projektu.

Po podepsání manifestů jsou informace o vydavateli aplikace založené na signatuře technologie Authenticode zobrazeny uživateli při instalaci v dialogovém okně oprávnění, a to proto, aby uživatel věděl, že aplikace pochází z důvěryhodného zdroje.

Další informace o ClickOnce a certifikáty naleznete v tématu ClickOnce a Authenticode.

ověřování na základě formuláře ASP.NET

Pokud chcete řídit, ke kterým nasazením má každý uživatel přístup, neměli byste povolit anonymní přístup k aplikacím ClickOnce nasazeným na webovém serveru. Místo toho byste měli povolit uživatelům přístup k nainstalovaným nasazením na základě identity uživatele pomocí ověřování systému Windows.

ClickOnce nepodporuje ověřování pomocí formulářů ASP.NET, protože používá trvalé soubory cookie; představují bezpečnostní riziko, protože se nacházejí v mezipaměti Internet Exploreru a mohou být hacknuty. Proto pokud nasazujete aplikace ClickOnce, nepodporuje se jakýkoli scénář ověřování kromě ověřování systému Windows.

Předání argumentů

K dalšímu posouzení zabezpečení dochází v případě, že potřebujete předat argumenty do aplikace ClickOnce. ClickOnce umožňuje vývojářům zadat řetězec dotazu aplikacím nasazeným přes web. Řetězec dotazu má formu řady párů názvu a hodnoty na konci adresy URL určených ke spuštění aplikace:

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

Argumenty řetězce dotazu jsou zakázány. Pokud je chcete povolit, musí být atribut trustUrlParameters nastaven v manifestu nasazení aplikace. Tuto hodnotu lze nastavit ze sady Visual Studio a z MageUI.exe. Podrobný postup povolení předávání řetězců dotazů najdete v tématu Postupy: Načtení informací o řetězci dotazu v online aplikaci ClickOnce.

Nikdy byste neměli předávat argumenty načtené pomocí řetězce dotazu do databáze nebo příkazového řádku bez ověřování argumentů a zajištění jejich bezpečnosti. Nebezpečné argumenty jsou argumenty s řídicími znaky databáze nebo příkazového řádku, které by mohly umožnit uživateli se zlými úmysly manipulaci s aplikací a provádění libovolných příkazů.

Poznámka:

Argumenty řetězce dotazu představují jediný způsob, jak při spuštění předat argumenty aplikaci ClickOnce. Argumenty nelze předat aplikaci ClickOnce z příkazového řádku.

Nasazení obfuskovaných sestavení

Visual Studio obsahuje bezplatnou ochranu PreEmptive Protection – Dotfuscator Community, kterou můžete použít k ochraně aplikací ClickOnce prostřednictvím obfuskace kódu a aktivních ochranných opatření. Podrobnosti najdete v části ClickOnce uživatelské příručky komunity Dotfuscator.