Přehled zabezpečení ve Windows Forms

Před vydáním rozhraní .NET Framework měl veškerý kód spuštěný na počítači uživatele stejná práva nebo oprávnění pro přístup k prostředkům, které měl uživatel počítače. Pokud byl například uživateli povolen přístup k systému souborů, byl kód povolen pro přístup k systému souborů; pokud byl uživateli povolen přístup k databázi, měl kód povolený přístup k této databázi. I když tato práva nebo oprávnění mohou být přijatelná pro kód ve spustitelných souborech, které uživatel explicitně nainstaloval na místním počítači, nemusí být přijatelné pro potenciálně škodlivý kód pocházející z internetu nebo místního intranetu. Tento kód by neměl mít přístup k prostředkům počítače uživatele bez oprávnění.

Rozhraní .NET Framework zavádí infrastrukturu nazvanou Zabezpečení přístupu kódu, která umožňuje odlišit oprávnění nebo práva, která má tento kód od práv, která má uživatel. Ve výchozím nastavení může kód přicházející z internetu a intranetu běžet pouze v tom, co se označuje jako částečná důvěryhodnost. Částečná důvěryhodnost předmětu aplikace na řadu omezení: mimo jiné je aplikace omezena na přístup k místnímu pevnému disku a nemůže spustit nespravovaný kód. Rozhraní .NET Framework řídí prostředky, ke kterým má kód povolený přístup, na základě identity tohoto kódu: odkud pochází, zda má sestavení se silným názvem, zda je podepsaný certifikátem atd.

Technologie ClickOnce, kterou používáte k nasazení model Windows Forms aplikací, usnadňuje vývoj aplikací, které běží v částečné důvěryhodnosti, v plném vztahu důvěryhodnosti nebo částečné důvěryhodnosti se zvýšenými oprávněními. ClickOnce poskytuje funkce, jako je zvýšení oprávnění a nasazení důvěryhodné aplikace, aby vaše aplikace mohly požadovat plnou důvěryhodnost nebo zvýšená oprávnění od místního uživatele zodpovědným způsobem.

Principy zabezpečení v rozhraní .NET Framework

Zabezpečení přístupu kódu umožňuje důvěřovat kódu různým stupňům v závislosti na tom, odkud kód pochází, a na dalších aspektech identity kódu. Další informace o důkazech, které modul CLR používá k určení zásad zabezpečení, najdete v tématu Důkazy. Pomáhá chránit počítačové systémy před škodlivým kódem a pomáhá chránit důvěryhodný kód před úmyslným nebo náhodným ohrožením zabezpečení. Zabezpečení přístupu kódu také poskytuje větší kontrolu nad akcemi, které může vaše aplikace provádět, protože můžete zadat jenom ta oprávnění, která potřebujete, aby vaše aplikace měla. Zabezpečení přístupu kódu má vliv na veškerý spravovaný kód, který cílí na modul CLR (Common Language Runtime), a to i v případě, že tento kód neprovede jedinou kontrolu oprávnění pro přístup k kódu. Další informace o zabezpečení v rozhraní .NET Framework naleznete v tématu Klíčové koncepty zabezpečení a Základy zabezpečení přístupu kódu.

Pokud uživatel spustí spustitelný soubor model Windows Forms přímo z webového serveru nebo sdílené složky, stupeň důvěryhodnosti udělený vaší aplikaci závisí na tom, kde se kód nachází a jak se spustí. Když se aplikace spustí, automaticky se vyhodnotí a obdrží pojmenovanou sadu oprávnění z modulu CLR (Common Language Runtime). Ve výchozím nastavení je kódu z místního počítače udělena sada oprávnění Úplný vztah důvěryhodnosti, kód z místní sítě je udělena sada oprávnění Místní intranet a kód z internetu je udělena sada oprávnění k internetu.

Poznámka:

V rozhraní .NET Framework verze 1.0 Service Pack 1 a Service Pack 2 obdrží skupina kódu internetové zóny sadu oprávnění Nothing. Ve všech ostatních verzích rozhraní .NET Framework obdrží skupina kódu internetové zóny nastavená oprávnění k internetu.

Výchozí oprávnění udělená v každé z těchto sad oprávnění jsou uvedená v tématu Výchozí zásady zabezpečení. V závislosti na oprávněních, která aplikace obdrží, se buď spustí správně, nebo vygeneruje výjimku zabezpečení.

Mnoho model Windows Forms aplikací se nasadí pomocí Technologie ClickOnce. Nástroje používané k vygenerování nasazení ClickOnce mají jiné výchozí nastavení zabezpečení, než jaké jsme probírali dříve. Další informace najdete v následující diskuzi.

Skutečná oprávnění udělená vaší aplikaci se můžou lišit od výchozích hodnot, protože je možné upravit zásady zabezpečení; to znamená, že vaše aplikace může mít oprávnění na jednom počítači, ale ne v jiném.

Vývoj bezpečnější aplikace model Windows Forms

Zabezpečení je důležité ve všech krocích vývoje aplikací. Začněte kontrolou a dodržováním pokynů pro zabezpečené kódování.

Dále se rozhodněte, jestli se aplikace musí spouštět v plném vztahu důvěryhodnosti, nebo jestli se má spouštět v částečném vztahu důvěryhodnosti. Spuštění aplikace v plné důvěryhodnosti usnadňuje přístup k prostředkům na místním počítači, ale vystavuje aplikaci a její uživatele vysokým bezpečnostním rizikům, pokud aplikaci nenavrhujete a nevyvíjíte výhradně v souladu s tématem Secure Coding Guidelines. Spuštění aplikace v částečné důvěryhodnosti usnadňuje vývoj bezpečnější aplikace a snižuje riziko, ale vyžaduje větší plánování implementace určitých funkcí.

Pokud zvolíte částečný vztah důvěryhodnosti (tj. sady oprávnění k internetu nebo místnímu intranetu), rozhodněte se, jak se má vaše aplikace chovat v tomto prostředí. model Windows Forms nabízí alternativní a bezpečnější způsoby implementace funkcí v částečně důvěryhodném prostředí. Některé části aplikace, jako je přístup k datům, je možné navrhnout a zapsat odlišně pro prostředí částečné důvěryhodnosti i úplné důvěryhodnosti. Některé model Windows Forms funkce, jako jsou nastavení aplikace, jsou navržené tak, aby fungovaly v částečné důvěryhodnosti. Další informace najdete v tématu Přehled Nastavení aplikace.

Pokud vaše aplikace potřebuje více oprávnění, než umožňuje částečný vztah důvěryhodnosti, ale nechcete spouštět plnou důvěryhodnost, můžete spouštět v částečném vztahu důvěryhodnosti a přitom uplatňovat pouze tato další oprávnění, která potřebujete. Pokud například chcete spustit částečný vztah důvěryhodnosti, ale musíte aplikaci udělit přístup jen pro čtení k adresáři v systému souborů uživatele, můžete požádat FileIOPermission pouze o tento adresář. Tento přístup se používá správně, může vaší aplikaci poskytnout zvýšenou funkčnost a minimalizovat rizika zabezpečení uživatelům.

Při vývoji aplikace, která se bude spouštět v částečném vztahu důvěryhodnosti, sledujte, jaká oprávnění musí vaše aplikace spouštět, a jaká oprávnění může vaše aplikace volitelně používat. Pokud jsou všechna oprávnění známá, měli byste vytvořit deklarativní žádost o oprávnění na úrovni aplikace. Vyžádání oprávnění informuje dobu běhu rozhraní .NET Framework o tom, která oprávnění vaše aplikace potřebuje a jaká oprávnění konkrétně nechce. Další informace o vyžádání oprávnění najdete v tématu Žádosti o oprávnění.

Když požadujete volitelná oprávnění, musíte zpracovat výjimky zabezpečení, které se vygenerují, pokud vaše aplikace provede akci, která vyžaduje oprávnění, která mu nejsou udělena. Vhodné zpracování SecurityException zajistí, aby vaše aplikace fungovala i nadále. Aplikace může pomocí výjimky určit, jestli má být funkce pro uživatele zakázaná. Aplikace může například zakázat možnost nabídky Uložit , pokud není udělena požadovaná oprávnění k souboru.

Někdy je obtížné zjistit, jestli jste uplatnili všechna příslušná oprávnění. Volání metody, která vypadá na povrchu, například může v určitém okamžiku během provádění přistupovat k systému souborů. Pokud aplikaci nenasazujete se všemi požadovanými oprávněními, může být při ladění na ploše testovací, ale při nasazení selže. Sada .NET Framework 2.0 SDK i Visual Studio 2005 obsahují nástroje pro výpočet oprávnění, která aplikace potřebuje: nástroj příkazového řádku MT.exe a funkci Vypočítat oprávnění sady Visual Studio.

Následující témata popisují další funkce zabezpečení model Windows Forms.

Téma Popis
- Zabezpečenější přístup k souborům a datům ve Windows Forms Popisuje, jak získat přístup k souborům a datům v částečném důvěryhodném prostředí.
- Zabezpečenější tisk ve Windows Forms Popisuje, jak získat přístup k funkcím tisku v prostředí s částečnou důvěryhodností.
- Dodatečné informace o zabezpečení ve Windows Forms Popisuje provádění manipulace s okny pomocí schránky a volání nespravovaného kódu v prostředí částečné důvěryhodnosti.

Nasazení aplikace s příslušnými oprávněními

Nejběžnější způsob nasazení aplikace model Windows Forms do klientského počítače je technologie nasazení ClickOnce, která popisuje všechny komponenty, které aplikace potřebuje ke spuštění. ClickOnce používá soubory XML označované jako manifesty k popisu sestavení a souborů, které tvoří vaši aplikaci, a také oprávnění, která vaše aplikace vyžaduje.

ClickOnce má dvě technologie pro vyžádání zvýšených oprávnění na klientském počítači. Obě technologie využívají certifikáty Authenticode. Certifikáty pomáhají zajistit uživatelům určité záruky, že aplikace pochází z důvěryhodného zdroje.

Následující tabulka popisuje tyto technologie.

Technologie zvýšených oprávnění Popis
Zvýšení oprávnění Při prvním spuštění aplikace uživatele vyzve k zobrazení výzvy k zadání dialogového okna zabezpečení. Dialogové okno Zvýšení oprávnění informuje uživatele o tom, kdo aplikaci publikoval, aby uživatel mohl učinit informované rozhodnutí o tom, jestli mu chcete udělit další vztah důvěryhodnosti.
Nasazení důvěryhodné aplikace Zahrnuje správce systému, který provádí jednorázovou instalaci certifikátu Authenticode vydavatele na klientském počítači. Od tohoto okamžiku se všechny aplikace podepsané certifikátem považují za důvěryhodné a mohou běžet v plném vztahu důvěryhodnosti na místním počítači bez dalších výzev.

Kterou technologii zvolíte, bude záviset na vašem prostředí nasazení. Další informace naleznete v tématu Volba strategie nasazení ClickOnce.

Ve výchozím nastavení jsou aplikace ClickOnce nasazené pomocí sady Visual Studio nebo nástrojů sady .NET Framework SDK (Mage.exe a MageUI.exe) nakonfigurovány tak, aby běžely na klientském počítači s úplným vztahem důvěryhodnosti. Pokud nasazujete aplikaci pomocí částečného vztahu důvěryhodnosti nebo jenom několika dalších oprávnění, budete muset toto výchozí nastavení změnit. Můžete to provést pomocí sady Visual Studio nebo nástroje sady .NET Framework SDK MageUI.exe při konfiguraci nasazení. Další informace o použití MageUI.exe naleznete v tématu Návod: Ruční nasazení aplikace ClickOnce. Viz Také viz Postupy: Nastavení vlastních oprávnění pro aplikaci ClickOnce nebo Postupy: Nastavení vlastních oprávnění pro aplikaci ClickOnce.

Další informace o aspektech zabezpečení technologie ClickOnce a zvýšení oprávnění naleznete v tématu Zabezpečení aplikací ClickOnce. Další informace o nasazení důvěryhodné aplikace naleznete v tématu Přehled nasazení důvěryhodné aplikace.

Testování aplikace

Pokud jste nasadili model Windows Forms aplikaci pomocí sady Visual Studio, můžete povolit ladění v částečném vztahu důvěryhodnosti nebo omezené sadě oprávnění z vývojového prostředí. Viz Také viz Postupy: Ladění aplikace ClickOnce s omezenými oprávněními.

Viz také