Přehled zabezpečení

Zabezpečení aplikace je probíhající proces. Nikdy nebude bod, kdy vývojář může zaručit, že aplikace bude před všemi útoky v bezpečí, protože není možné předpovědět, jaké druhy budoucích útoků přinese nové technologie. Naopak to, že nikdo ještě nezjmeoval (nebo publikoval) chyby zabezpečení v systému, neznamená, že neexistuje nebo by mohl existovat. Během fáze návrhu projektu je potřeba naplánovat zabezpečení a také naplánovat, jak se bude zabezpečení udržovat po celou dobu životnosti aplikace.

Návrh pro 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 něco, co je třeba implementovat po dokončení projektu. Nenasazení zabezpečení do aplikace na počátku vede k nezabezpečených aplikacím, protože jsme se jen trochu zamysleli nad tím, čím je aplikace zabezpečená.

Implementace zabezpečení na poslední chvíli vede k více chybám, protože software přeruší nová omezení nebo musí být přepsán, aby vyhovoval neočekávaný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 bylo možné pokračovat ve spolupráci s vývojem nových funkcí.

Modelování hrozeb

Systém proti útokům nemůžete chránit, pokud neporozuměli všem potenciálním útokům, které jsou vystaveny. Proces vyhodnocování bezpečnostních hrozeb, nazývaných modelování hrozeb, je nezbytný k určení pravděpodobnosti a důsledků porušení zabezpečení ve vaší ADO.NET aplikaci.

Modelování hrozeb se skládá ze tří kroků vysoké úrovně: porozumění pohledu na adverzi, určení zabezpečení systému a určení hrozeb.

Modelování hrozeb je iterativní přístup k posuzování ohrožení zabezpečení ve vaší aplikaci, aby bylo možné najít ty, které jsou nejnebezpečnější, protože zpřístupňuje nejcitlivější data. Jakmile identifikujete ohrožení zabezpečení, seřadíte je podle závažnosti a vytvoříte sadu protiopatření seřazenou podle priority.

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

Prostředek Popis
Web modelování hrozeb na portálu bezpečnostního inženýrství Zdroje informací na této stránce vám pomůžou pochopit proces modelování hrozeb a vytvořit modely hrozeb, které můžete použít k zabezpečení vlastních aplikací.

Princip nejmenších oprávnění

Při návrhu, sestavování a nasazování aplikace musíte předpokládat, že vaše aplikace bude napadána. 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í. Jiné mohou pocházet z dobře zamyšlového kódu, který útočník zneužije. Při plánování zabezpečení vždy předpokládejme, že dojde k nejhoršímu scénáři.

Jedním z protiměr, které můžete využít, je pokusit se co nejvíce zdí kolem kódu posouvat spuštěním s nejmenšími oprávněními. Princip minimálního oprávnění říká, že každé dané oprávnění by mělo být uděleno co nejmenšímu množství kódu potřebnému po nejkratší dobu potřebnou k tomu, aby se úloha potřebná k tomu, aby se dala provést.

Osvědčeným postupem při vytváření zabezpečených aplikací je začít s žádnými oprávněními a pak přidat nejužší oprávnění pro konkrétní prováděnou úlohu. Naproti tomu od všech oprávnění a pak odepření jednotlivých oprávnění vede k nezabezpečeným aplikacím, které se obtížně testují a udržují, protože bezpečnostní potíže mohou existovat před neúmyslným udělením více oprávnění, než je potřeba.

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

Prostředek Popis
Zabezpečení aplikací Obsahuje odkazy na obecná témata týkající se zabezpečení. Obsahuje také odkazy na témata týkající se zabezpečení distribuovaných aplikací, webových aplikací, mobilních 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ý kód má k chráněným prostředkům a operacím. V .NET Framework cas provádí následující funkce:

  • Definuje oprávnění a sady oprávnění, které představují právo na 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ží sady oprávnění ke skupinám kódu (skupinám kódu).

  • Umožňuje kódu vyžádat si oprávnění, která vyžaduje ke spuštění, a také oprávnění, která by mohla být užitečná, a určuje, která oprávnění kód nesmí nikdy mít.

  • Udělí oprávnění ke každému načtenmu sestavení na základě oprávnění požadovaných kódem a operací povolených zásadou zabezpečení.

  • Umožňuje kódu vyžádat, aby jeho volající určitá oprávnění.

  • Umožňuje kódu požadovat, aby jeho volající vlastnili digitální podpis, což umožňuje volání chráněného kódu pouze volajícím z konkrétní organizace nebo webu.

  • Vynucuje omezení kódu za běhu porovnáním udělených oprávnění všech volajících 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 pro svůj kód kontext zabezpečení, který uděluje přístup pouze k prostředkům, které potřebuje k práci, a nic dalšího.

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

Prostředek 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ě rolí a částečně důvěryhodnými prostředími z pohledu ADO.NET aplikace.
Zabezpečení přístupu kódu Obsahuje odkazy na další témata popisující CAS v .NET Framework.

Zabezpečení databáze

Princip nejmenších oprávnění platí také pro 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.

  • Nepovolovat uživatelům přístup k účtům pro správu jenom proto, aby kód zpracuje.

  • Nevrací klientské aplikaci chybové zprávy na straně serveru.

  • Ověřte veškerý vstup na straně klienta i serveru.

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

  • Povolte auditování a protokolování zabezpečení 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:

Prostředek Popis
SQL Server – zabezpečení Poskytuje přehled zabezpečení SQL Server s aplikačními scénáři, které poskytují pokyny pro vytváření zabezpečených aplikací ADO.NET, které cílí SQL Server.
Recommendations 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 a správa zabezpečení

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, když se objeví nové hrozby.

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

Prostředek 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í způsob správy zásad zabezpečení.

Viz také