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.

Kromě toho ClickOnce používá certifikáty k ověření pravosti vydavatele aplikace a podepsání manifestů aplikace a nasazení k prokázání, že soubory nebyly manipulovány. Podepisování je volitelný krok, který usnadňuje změnu souborů aplikace po vytvoření manifestů. Bez podepsaných manifestů je ale obtížné zajistit, aby instalační program aplikace nebyl man-in-the-middle bezpečnostní útoky man-in-the-middle. 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í se definují v prohlížeči a jsou založené 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. U počítačů, na kterých je tato zásada nasazená, se oprávnění udělí automaticky a uživateli se nezobrazí 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.

Zahrnutí oprávnění, které není součástí výchozí sady oprávnění pro zónu, ze které je aplikace nasazená, způsobí, že se koncovému uživateli zobrazí výzva k udělení oprávnění v době instalace nebo aktualizace. 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, kde je tato zásada nasazená, se oprávnění automaticky udělí a uživateli se nezobrazí 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 prohlížeče 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é prostřednictvím řetězce dotazu do databáze nebo příkazového řádku bez kontroly argumentů, abyste měli jistotu, že jsou bezpečné. 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.