Přehled zabezpečení ve Windows Forms

Před vydáním verze .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 měl uživatel například povolený přístup k systému souborů, měl kód povolený přístup k systému souborů. Pokud měl uživatel 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 přichá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í.

Aplikace .NET Framework infrastrukturu nazvanou Zabezpečení přístupu kódu, která vám umožní 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ý vztah důvěryhodnosti. Částečná důvěryhodnost podá aplikaci řadu omezení: aplikace má mimo jiné omezený přístup k místnímu pevnému disku a nemůže spustit nespravovaný kód. Služba .NET Framework řídí prostředky, ke které má kód povolený přístup, na základě identity tohoto kódu: odkud pochází, jestli má sestavení se silným názvem ,jestli je podepsaný certifikátem atd.

ClickOnce, kterou použijete k nasazení aplikací Windows Forms, vám usnadní vývoj aplikací, které běží v částečném vztahu důvěryhodnosti, v úplném vztahu důvěryhodnosti nebo v částečném vztahu 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 mohla žádat o úplný vztah důvěryhodnosti nebo zvýšená oprávnění od místního uživatele zodpovědným způsobem.

Principy zabezpečení v .NET Framework

Zabezpečení přístupu kódu umožňuje, aby se kódu důvěřoval v různých stupních 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 (Common Language Runtime) používá k určení zásad zabezpečení, najdete v tématu Evidence. 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 nechtěným ohrožením zabezpečení. Zabezpečení přístupu kódu také poskytuje větší kontrolu nad tím, jaké akce může vaše aplikace provádět, protože můžete zadat pouze oprávnění, která vaše aplikace potřebuje. Zabezpečení přístupu kódu má vliv na veškerý spravovaný kód, který cílí na modul CLR (Common Language Runtime), i když tento kód neprovedlo jedinou kontrolu oprávnění code-access-security. Další informace o zabezpečení v tématu .NET Framework tématu Klíčové koncepty zabezpečení a Základy zabezpečení přístupu kódu.

Pokud uživatel spustí spustitelný soubor Windows Forms přímo z webového serveru nebo sdílené složky, bude stupeň důvěryhodnosti udělený vaší aplikaci záviset na tom, kde se kód nachází a jak se spustí. Při spuštění se aplikace automaticky 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ěleno oprávnění Úplné důvěryhodnosti, kódu z místní sítě je udělena sada oprávnění Místní intranet a kódu z internetu je udělena sada oprávnění k internetu.

Poznámka

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

Výchozí oprávnění udělená v každé z těchto sad oprávnění jsou uvedena 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 Windows forms se nasadí pomocí 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 mohou lišit od výchozích hodnot, protože zásady zabezpečení je možné upravit. To znamená, že vaše aplikace může mít oprávnění na jednom počítači, ale ne na jiném.

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

Zabezpečení je důležité ve všech krocích vývoje aplikací. Začněte tím, že si prohlédněte a postupte podle pokynů pro zabezpečené kódování.

Dále se rozhodněte, jestli musí aplikace běžet v plné důvěryhodnosti, nebo jestli by měla běžet 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 v místním počítači, ale vystavuje vaši aplikaci a její uživatele vysokým bezpečnostním rizikům, pokud nenavrhovat a vyvíjet aplikaci výhradně v souladu s tématem Secure Coding Guidelines. Spuštění aplikace v částečném vztahu důvěryhodnosti usnadňuje vývoj bezpečnější aplikace a snižuje velké riziko, ale vyžaduje větší plánování způsobu implementace určitých funkcí.

Pokud zvolíte částečný vztah důvěryhodnosti (to znamená sadu oprávnění Internet nebo Místní intranet), rozhodněte, jak se má vaše aplikace v tomto prostředí chovat. Windows Formuláře poskytují alternativní a bezpečnější způsoby implementace funkcí v částečně důvěryhodném prostředí. Některé části aplikace, například přístup k datům, lze navrhovat a zapisovat odlišně pro prostředí částečné důvěryhodnosti i úplné důvěryhodnosti. Některé Windows Forms, například nastavení aplikace, jsou navrženy tak, aby fungovaly v částečném vztahu důvěryhodnosti. Další informace najdete v tématu Přehled Nastavení aplikací.

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 v úplném vztahu důvěryhodnosti, můžete spustit v částečném vztahu důvěryhodnosti a přitom prosadit pouze ta další oprávnění, která potřebujete. Pokud například chcete spustit v částečném vztahu 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 pouze o FileIOPermission tento adresář. Při správném použití může tento přístup vaší aplikaci poskytnout vyšší funkčnost a minimalizovat rizika zabezpečení pro vaše uživatele.

Při vývoji aplikace, která bude běžet 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 známa všechna oprávnění, měli byste vytvořit deklarativní požadavek na oprávnění na úrovni aplikace. Žádost o oprávnění informuje .NET Framework době běhu o tom, která oprávnění vaše aplikace potřebuje a která oprávnění konkrétně nechce. Další informace o vyžádání oprávnění najdete v tématu Vyžádání oprávnění.

Pokud 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, aby k ní nebyla udělena oprávnění. Odpovídající zpracování SecurityException zajistí, že vaše aplikace bude moci dále fungovat. Vaše 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ěleno požadované oprávnění k souboru.

Někdy je obtížné vědět, jestli jste prosadili všechna příslušná oprávnění. Volání metody, které vypadá na povrchu neškodně, může například v nějakém okamžiku během provádění přistupovat k systému souborů. Pokud nenasadíte aplikaci se všemi požadovanými oprávněními, může být při ladění na ploše v pořádku, 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 Výpočet oprávnění v Visual Studio.

Následující témata popisují další funkce Windows Forms.

Téma Popis
- Bezpečnější přístup k souborům a datům ve Windows Forms Popisuje, jak přistupovat k souborům a datům v prostředí s částečnou důvěryhodností.
- Bezpečnější tisk ve formulářích Windows forms Popisuje, jak získat přístup k funkcím tisku v prostředí částečné důvěryhodnosti.
- Další aspekty zabezpečení v Windows Forms Popisuje provádění manipulace s oknem, používání 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ším způsobem nasazení aplikace Windows Forms do klientského počítače je ClickOnce, což je technologie nasazení, která popisuje všechny součásti, které vaše aplikace potřebuje ke spuštění. ClickOnce používá soubory XML s názvem 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 spoléhají na použití certifikátů Authenticode. Certifikáty poskytují uživatelům určité záruky, že aplikace pochází z důvěryhodného zdroje.

Tyto technologie jsou popsány v následující tabulce.

Technologie se zvýšenými oprávněními Popis
Zvýšení oprávnění Při prvním spuštění aplikace zobrazí uživateli výzvu k zadání dialogového okna zabezpečení. Dialogové okno Zvýšení oprávnění informuje uživatele o tom, kdo aplikaci publikoval, aby se mohl informovaně rozhodnout, jestli aplikaci udělit další důvěryhodnost.
Nasazení důvěryhodné aplikace Zahrnuje správce systému, který provádí jednou 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 v místním počítači bez dalších výtek.

Technologie, kterou zvolíte, bude záviset na vašem prostředí nasazení. Další informace najdete v tématu Volba ClickOnce nasazení.

Ve výchozím nastavení jsou ClickOnce aplikace nasazené pomocí nástroje sady Visual Studio nebo sady .NET FRAMEWORK SDK (Mage.exe a MageUI.exe) nakonfigurovány tak, aby se spouštěl na klientském počítači s plnou důvěryhodností. Pokud nasazujete aplikaci pomocí částečného vztahu důvěryhodnosti nebo pouze pomocí některých dalších oprávnění, budete muset toto výchozí nastavení změnit. Můžete to provést buď pomocí nástroje Visual Studio, nebo .NET Framework SDK MageUI.exe při konfiguraci nasazení. Další informace o tom, jak používat MageUI.exe, najdete v tématu Návod: Ruční nasazení ClickOnce aplikace. Podívejte se také na postupy: Nastavení vlastních oprávnění pro ClickOnce aplikaci nebo Postupy: Nastavení vlastních oprávnění pro ClickOnce aplikaci.

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

Testování aplikace

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

Viz také