Přehled zabezpečení

Zabezpečení aplikace je probíhající proces. Nikdy nebude existovat bod, kdy vývojář může zaručit, že aplikace je v bezpečí před všemi útoky, protože není možné předpovědět, jaké druhy budoucích útoků budou nové technologie přinést. Naopak, právě proto, že nikdo dosud nezjistil (nebo publikoval) chyby zabezpečení v systému neznamená, že neexistuje nebo neexistuje. Potřebujete naplánovat zabezpečení během fáze návrhu projektu a také naplánovat, jak bude zabezpečení po celou dobu životnosti aplikace zachováno.

Navrhování s důrazem na zabezpečení

Jedním z největších problémů při vývoji zabezpečených aplikací je to, že zabezpečení je často po dokončení kódu něco, co je potřeba implementovat po dokončení projektu. Nezabudování zabezpečení do aplikace na začátku vede k nezabezpečeným aplikacím, protože se málo myslelo, co aplikaci zabezpečí.

Implementace zabezpečení za poslední minutu vede k dalším chybám, protože software se přeruší podle nových omezení nebo se musí přepsat tak, aby vyhovoval neočekáženým funkcím. Každý řádek revidovaného kódu obsahuje možnost zavést novou chybu. Z tohoto důvodu byste měli zvážit zabezpečení v rané fázi procesu vývoje, aby mohlo pokračovat v kombinaci s vývojem nových funkcí.

Modelování hrozeb

Systém nelze chránit před útoky, pokud nerozumíte všem potenciálním útokům, kterým je vystaven. Proces vyhodnocení bezpečnostních hrozeb označovaných jako modelování hrozeb je nezbytný k určení pravděpodobnosti a důsledky porušení zabezpečení ve vaší ADO.NET aplikaci.

Modelování hrozeb se skládá ze tří základních kroků: pochopení zobrazení nežádoucího uživatele, charakterizující zabezpečení systému a určování hrozeb.

Modelování hrozeb je iterativní přístup k posouzení ohrožení zabezpečení ve vaší aplikaci, abyste našli ty, které jsou nejbezpečnější, protože zpřístupňují nejcitlivější data. Jakmile identifikujete ohrožení zabezpečení, řadíte je v pořadí podle závažnosti a vytvoříte sadu protichůdných opatření, která budou proti hrozbám čelit.

Další informace naleznete v následujících zdrojích:

Resource Popis
Web Modelování hrozeb na portálu Security Engineering Portal Zdroje informací na této stránce vám pomůžou pochopit proces modelování hrozeb a vytvářet modely hrozeb, které můžete použít k zabezpečení vlastních aplikací.

Princip nejnižších oprávnění

Při návrhu, sestavení a nasazení aplikace musíte předpokládat, že vaše aplikace bude napadena. Tyto útoky často pocházejí ze škodlivého kódu, který se spouští s oprávněními uživatele, který kód spouští. Ostatní můžou pocházet z dobře záměrného kódu, který útočník zneužil. Při plánování zabezpečení vždy předpokládejme, že dojde k nejhoršímu scénáři.

Jednou z měr, kterou můžete použít, je zkusit vytvořit co nejvíce stěn kolem kódu spuštěním s nejnižšími oprávněními. Princip nejnižší úrovně oprávnění říká, že všechna daná oprávnění by měla být udělena nejmenšímu množství kódu potřebnému pro nejkratší dobu potřebnou k dokončení úlohy.

Osvědčeným postupem při vytváření zabezpečených aplikací je začít bez oprávnění a pak přidat nejužší oprávnění pro konkrétní úlohu, která se provádí. Naproti tomu počínaje všemi oprávněními a zamítnutím jednotlivých oprávnění vede k nezabezpečeným aplikacím, které jsou obtížné testovat a udržovat, protože bezpečnostní díry mohou existovat z neúmyslného udělení více oprávnění, než je vyžadováno.

Další informace o zabezpečení aplikací najdete v následujících zdrojích informací:

Resource Popis
Zabezpečování aplikací Obsahuje odkazy na obecná témata týkající se zabezpečení. Obsahuje také odkazy na témata pro zabezpečení distribuovaných aplikací, webových aplikací, mobilních aplikací a desktopových aplikací.

Zabezpečení přístupu kódu (CAS)

Zabezpečení přístupu kódu (CAS) je mechanismus, který pomáhá omezit přístup, který má tento kód k chráněným prostředkům a operacím. V rozhraní .NET Framework provádí CAS následující funkce:

  • Definuje oprávnění a sady oprávnění, které představují právo pro přístup k různým systémovým prostředkům.

  • Umožňuje správcům konfigurovat zásady zabezpečení tím, že přidružuje sady oprávnění ke skupinám kódu (skupin kódu).

  • Umožňuje kódu požádat o oprávnění, která vyžaduje ke spuštění, a také oprávnění, která by byla užitečná pro použití, a určuje, která oprávnění musí mít kód nikdy.

  • Uděluje oprávnění pro každé načtené sestavení na základě oprávnění požadovaných kódem a operací povolených zásadami zabezpečení.

  • Umožňuje kódu požadovat, aby jeho volající měli specifická oprávnění.

  • Umožňuje kódu požadovat, aby jeho volající měli digitální podpis, takže volajícím z určité organizace nebo webu umožní volat chráněný kód.

  • Vynucuje omezení kódu za běhu porovnáním udělených oprávnění každého volajícího v zásobníku volání s oprávněními, která volající musí mít.

Pokud chcete minimalizovat množství škod, ke kterým může dojít v případě úspěšného útoku, zvolte kontext zabezpečení pro váš kód, který uděluje přístup pouze k prostředkům, které potřebuje k provedení své práce, a ne více.

Další informace naleznete v následujících zdrojích:

Resource Popis
Zabezpečení přístupu ke kódu a ADO.NET Popisuje interakce mezi zabezpečením přístupu kódu, zabezpečením na základě role a částečně důvěryhodnými prostředími z pohledu aplikace ADO.NET.
Zabezpečení přístupu kódu Obsahuje odkazy na další témata popisující CAS v rozhraní .NET Framework.

Zabezpečení databáze

Princip nejnižších oprávnění se vztahuje také na váš zdroj dat. Mezi obecné pokyny pro zabezpečení databáze patří:

  • Vytvořte účty s nejnižšími možnými oprávněními.

  • Nepovolujte uživatelům přístup k účtům pro správu, jen aby kód fungoval.

  • Nevrací chybové zprávy na straně serveru klientským aplikacím.

  • Ověřte všechny vstupy v klientovi i na serveru.

  • Používejte parametrizované příkazy a vyhněte se dynamickým příkazům SQL.

  • Povolte auditování zabezpečení a protokolování pro databázi, kterou používáte, abyste měli upozornění na případné porušení zabezpečení.

Další informace naleznete v následujících zdrojích:

Resource Popis
SQL Server – zabezpečení Poskytuje přehled zabezpečení SQL Serveru ve scénářích aplikací, které poskytují pokyny k vytváření zabezpečených ADO.NET aplikací, které cílí na SQL Server.
Doporučení pro strategie přístupu k datům Poskytuje doporučení pro přístup k datům a provádění databázových operací.

Zásady zabezpečení a Správa istrace

Nesprávná správa zásad zabezpečení přístupu kódu (CAS) může potenciálně způsobit slabá místa zabezpečení. Po nasazení aplikace by se měly použít techniky monitorování zabezpečení a vyhodnotit rizika, jakmile se objeví nové hrozby.

Další informace naleznete v následujících zdrojích:

Resource Popis
Správa zásad zabezpečení Poskytuje informace o vytváření a správě zásad zabezpečení.
Osvědčené postupy pro zásady zabezpečení Obsahuje odkazy popisující správu zásad zabezpečení.

Viz také