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á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. |
Popisuje, jak pracovat se systémem zabezpečení rozhraní .NET Framework pomocí požadavků zabezpečení. |
|
Popisuje, jak chránit soukromé členy. |
|
Popisuje , jak pomoci chránit metody před voláním částečně důvěryhodným kódem. |
|
Popisuje zabezpečení týkající se kódu, který obaluje jiný kód. |
|
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. |
|
Popisuje zabezpečení týkající se zpracování výjimek. |
|
Popisuje zabezpečení týkající se aplikací, které akceptují uživatelský vstup. |
|
Popisuje zabezpečení týkající se aplikací, které komunikují mezi doménami aplikace. |
|
Popisuje zabezpečení týkající se serializace objektů. |
|
Popisuje, jak zabránit konfliktu časování ve vašem kódu. |
|
Popisuje zabezpečení týkající se aplikací, které generují dynamický kód. |
|
Popisuje oprávnění, která potenciálně mohou umožnit obcházení zabezpečení. |
|
Popisuje důležité informace pro testování a instalaci vaší aplikace. |
|
Detailně popisuje zabezpečení technologie ASP.NET a poskytuje pokyny pro použití v kódu. |
|
Detailně popisuje zabezpečení přístupu kódu rozhraní .NET Framework a poskytuje pokyny pro použití v kódu. |
|
Detailně popisuje zabezpečení založené na rolích v rozhraní .NET Framework a poskytuje pokyny pro použití v kódu. |