Bezpečnost typů a zabezpečení

Kód zajišťující bezpečnost typů přistupuje pouze k paměťovým místům, ke kterým má oprávnění přistupovat. (U této diskuse, pojem bezpečnost typů specificky odkazuje na bezpečnost typů paměti a neměl by být zaměňován s bezpečností typů z širšího hlediska.) Například, kód zajišťující bezpečnost typů nemůže číst hodnoty ze soukromých položek jiných objektů. Přistupuje k typům pouze dobře definovanými, přípustnými způsoby.

Během JIT kompilace, volitelný proces ověření zkoumá metadata a jazyk MSIL (Microsoft Intermediate Language) metody, která má být kompilována za běhu (JIT) do nativního strojového kódu a to proto, aby ověřil, že jsou bezpečného typu. Tento proces je vynechán, pokud kód má oprávnění obejít ověření. Další informace o ověření naleznete v tématu Proces spravovaného spouštění.

Ačkoli ověření bezpečnosti typů není závazné pro spuštění spravovaného kódu, bezpečnost typů hraje rozhodující roli v izolaci sestavení a prosazování zabezpečení. Pokud je kód typově bezpečný, modul CLR (Common Language Runtime) může zcela izolovat sestavení od sebe navzájem. Tato izolace pomáhá zajistit, že sestavení se nemohou navzájem nepříznivě ovlivňovat a také zvyšuje spolehlivost aplikace. Komponenty zajišťující bezpečnost typů mohou bezpečně běžet ve stejném procesu, i když jsou důvěryhodné na různých úrovních. Pokud kód není typově bezpečný, mohou se objevit nežádoucí vedlejší účinky. Například modul runtime nemůže bránit nespravovanému kódu ve volání nativního (nespravovaného) kódu a v provádění škodlivých operací. Pokud je kód typově bezpečný, mechanismus pro prosazování zabezpečení modulu runtime zajišťuje, že tento kód nepřistupuje k nativnímu kódu, pokud nemá příslušná oprávnění. Aby mohl být kód, který není typově bezpečný spuštěn, musí být udělena SecurityPermission s předaným členem výčtu SkipVerification.

Viz také

Koncepty

Psaní ověřovatelného kódu zajišťující bezpečnost typů

Další zdroje

Klíčové koncepty zabezpečení