Sdílet prostřednictvím


Pokyny pro zabezpečené kódování

Zabezpečení založené na legitimaci a zabezpečení přístupu kódu poskytují velmi výkonné, explicitní mechanismy pro implementaci zabezpečení. Většina kódu aplikace může jednoduše použít infrastrukturu implementovanou rozhraním .NET Framework. V některých případech je vyžadováno další zabezpečení specifické pro aplikaci, které je vytvořeno buď rozšířením systému zabezpečení nebo pomocí nových ad hoc metod.

Používáním oprávnění vynucovaných rozhraním .NET Framework a jiných vynucení ve vašem kódu, byste měli vztyčit překážky, abyste bránili škodlivému kódu získávat informace, které nechcete, aby měl nebo provádět jiné nežádoucí akce. Kromě toho musíte pomocí důvěryhodného kódu nastolit rovnováhu mezi zabezpečením a použitelností ve všech očekávaných scénářích.

Tento přehled popisuje různé způsoby, jak může být kód navržen pro práci se systémem zabezpečení.

PoznámkaPoznámka

V rozhraní .NET Framework verze 4, byly důležité změny modelu zabezpečení a terminologie rozhraní .NET Framework. Další informace o těchto změnách naleznete v tématu Změny zabezpečení v rozhraní .NET Framework 4.

Neutrální kód pro zabezpečení

Neutrální kód pro zabezpečení explicitně nic nedělá se systémem zabezpečení. Běží s jakýmikoliv oprávněními, které obdrží. Ačkoli aplikace, které selžou při zachytávání výjimek zabezpečení asociovaných s chráněnými operacemi (jako je například použití souborů, sítí a tak dále), což má za následek nezpracovanou výjimku, tak neutrální kód pro zabezpečení stále využívá technologií zabezpečení rozhraní .NET Framework.

Neutrální knihovna pro zabezpečení má zvláštní charakteristiky, kterým byste měli porozumět. Předpokládejme, že vaše knihovna poskytuje prvky API rozhraní, které používají soubory nebo volají nespravovaný kód. Pokud váš kód nemá odpovídající oprávnění, nepoběží tak, jak je popsáno. Dokonce i když kód má oprávnění, tak libovolný kód aplikace, který ho volá musí mít stejné oprávnění, aby fungoval. Pokud volající kód nemá správné oprávnění, tak je vyvolána výjimka SecurityException jako výsledek procházení zásobníku zabezpečení přístupu kódu.

Kód aplikace, která není znovupoužitelnou komponentou

Pokud je váš kód součástí aplikace, která nebude volána jiným kódem, tak je zabezpečení jednoduché a zvláštní kódování nemusí být vyžadováno. Nezapomeňte však, že nebezpečný kód může volat váš kód. I když zabezpečení přístupu kódu může zamezit škodlivému kódu přistupovat k prostředkům, nicméně takový kód by stále mohl číst hodnoty vašich položek nebo vlastností, které mohou obsahovat citlivé informace.

Navíc pokud váš kód akceptuje uživatelský vstup z Internetu nebo jiných nespolehlivých zdrojů, musíte být opatrní co se týče škodlivého vstupu.

Spravovaná obálka pro implementaci nativního kódu

Obvykle je v tomto scénáři nějaká užitečná funkcionalita implementována v nativním kódu, který chcete učinit dostupný pro spravovaný kód. Spravované obálky se snadno píší buď pomocí volání nespravovaného kódu nebo pomocí zprostředkovatele komunikace s objekty COM. Nicméně pokud tak učiníte, volající vašich obálek musí mít práva nespravovaného kódu, aby byli úspěšní. Podle výchozích zásad kód stažený z intranetu nebo Internetu nebude fungovat s obálkami.

Místo poskytování všech aplikací, které používají tato práva nespravovaného kódu obálek, je výhodnější přidělit tato práva pouze obálkovému kódu. Pokud základní funkcionalita nezveřejňuje žádné prostředky a implementace je obdobně bezpečná, tak obálka pouze potřebuje uplatnit svá práva umožňující jakémukoliv kódu volání prostřednictvím této obálky. Pokud jsou zahrnuty prostředky, tak kódování zabezpečení by mělo být stejné jako v případě kódu knihovny popsanému v dalším oddíle. Protože obálka potenciálně vystavuje volající těmto prostředkům, pečlivé ověření bezpečnosti nativního kódu je nezbytné a odpovídá za to obálka.

Kód knihovny, který zveřejňuje chráněné prostředky

Toto je nejvíce výkonný a tedy potenciálně nebezpečný (pokud je proveden nesprávně) přístup pro kódování zabezpečení: Vaše knihovna slouží jako rozhraní pro jiný kód pro přístup k určitým prostředkům, které nejsou jinak k dispozici. Stejně jako třídy rozhraní .NET Framework vynucuje oprávnění pro prostředky, které používá. Všude, kde zveřejníte prostředek, musí váš kód nejprve požádat o oprávnění, které je vhodné pro daný prostředek (to znamená, musí provést kontrolu zabezpečení) a poté obvykle uplatní svá práva k provedení aktuální operace.

Příbuzná témata

Title

Popis

Postupy: Spustit částečně důvěryhodný kód v izolovaném prostoru

Vysvětluje, jak spustit částečně důvěryhodnou aplikaci v prostředí s omezeným přístupem, které omezuje oprávnění přístupu kódu udělená této aplikaci.

Žádost o oprávnění

Popisuje, jak pracovat se systémem zabezpečení rozhraní .NET Framework pomocí požadavků zabezpečení.

Zabezpečení stavových dat

Popisuje, jak chránit soukromé členy.

Zabezpečení přístupu k metodě

Popisuje , jak pomoci chránit metody před voláním částečně důvěryhodným kódem.

Zabezpečený kód obálky

Popisuje zabezpečení týkající se kódu, který obaluje jiný kód.

Zabezpečené a veřejné položky pole určené pouze pro čtení

Popisuje zabezpečení týkající se kódu, který používá veřejná pole označená jen pro čtení, nalezená v knihovnách rozhraní .NET Framework.

Zabezpečené zpracování výjimek

Popisuje zabezpečení týkající se zpracování výjimek.

Zabezpečení a uživatelský vstup

Popisuje zabezpečení týkající se aplikací, které akceptují uživatelský vstup.

Důležité informace o zabezpečení a vzdálené komunikaci

Popisuje zabezpečení týkající se aplikací, které komunikují mezi doménami aplikace.

Zabezpečení a serializace

Popisuje zabezpečení týkající se serializace objektů.

Zabezpečení a konflikty časování

Popisuje, jak zabránit konfliktu časování ve vašem kódu.

Zabezpečení a průběžné generování kódu

Popisuje zabezpečení týkající se aplikací, které generují dynamický kód.

Nebezpečná správa oprávnění a zásad

Popisuje oprávnění, která potenciálně mohou umožnit obcházení zabezpečení.

Problémy zabezpečení a instalace

Popisuje důležité informace pro testování a instalaci vaší aplikace.

Zabezpečení webové aplikace ASP.NET

Detailně popisuje zabezpečení technologie ASP.NET a poskytuje pokyny pro použití v kódu.

Zabezpečení přístupu kódu

Detailně popisuje zabezpečení přístupu kódu rozhraní .NET Framework a poskytuje pokyny pro použití v kódu.

Zabezpečení založené na rolích

Detailně popisuje zabezpečení založené na rolích v rozhraní .NET Framework a poskytuje pokyny pro použití v kódu.