Jak zabezpečit aplikaci v ASP.NET
Mnozí vývojáři web aplikací nevěnují příliš mnoho energie zabezpečení svých aplikací před vetřelci, kteří přímo prahnou po získání nějakých užitečných informací. Dnes začínám nový seriál, který se bude podrobně věnovat zabezpečení aplikací v .NET. Věřím, že na konci seriálu bude většina z vás tvrdit, že „bezpečnost je až na prvním místě“.
O tom, jak zabezpečit server proti útokům, bylo napsáno mnohé a myslím si, že v tomto seriálu nemá význam se touto problematikou detailně zaobírat. Nicméně musím podotknout, že při špatně zabezpečeném serveru nemá valný význam zabezpečovat aplikaci na nezabezpečeném serveru. Pro zájemce o podrobné informace uvádím několik užitečné odkazy o tom, jak zabezpečit server a IIS:
Pokud bude zájem o návody na zabezpečení vlastního serveru a IIS, vrátím se k tomuto tématu v některém z příštích článků. Nyní budu předpokládat, že všichni již máte zabezpečený server proti „brutálnímu útoku“ a s chutí se vrhnete na zabezpečení obsahu proti neoprávněnému přístupu obyčejným uživatelem. Nejprve vám nastíním tři základní pojmy se kterými se nesetkáte pouze v mém článku, ale obecně při zabezpečení:
- Authentication (Autentizace)
Toto tajemné slovo skrývá proces který slouží ke zjištění a ověření identity návštěvníka. Návštěvník musí věrohodným způsobem dokázat, že je skutečně ten, za koho se vydává. Nejčastější způsob autentizace je zadání uživatelského jména a hesla. Výsledkem procesu je potvrzeni nebo vyvrácení identity uživatele. - Authorization (Autorizace)
Autorizace je proces při kterém dochází k ověření, zda autentizovaný uživatel má povolen přístup k požadovanému zdroji. Výstupní informací z tohoto procesu je rozhodnutí, zda má uživatel právo přistupovat ke zvolenému zdroji informací způsobem, který požaduje (čtení, zápis a podobně). - Impersonation (Zosobnění)
Při použití zosobnění operace, které klient v aplikaci provádí, jsou vykonávány s jinou identitou, než je identita autentizovaného a autorizovaného uživatele. Zda bude zosobnění použito či nikoli a jaká identita bude použita, se řídí pomocí konfiguračního souboru web.config
Autentizace v ASP.NET
ASP.NET používá 4 různé mechanizmy autentizace (None, Windows, Forms, Passport). To, který z mechanizmů bude použit, záleží na nastavení v souboru web.config, který se může nacházet nejen v kořenovém adresáři aplikace, ale i v jakémkoli vnořeném adresáři. V souboru web.config se nachází sekce <system.web>, ve které se zaměříme na sekci <authentication>.
|
Režim autentizace None
Jde o standardní nastavení. Nedochází k žádné autentizaci a veškeré dotazy jsou prováděny buď v kontextu lokálního systémového procesu, nebo v kontextu účtu IUSR_jméno_stroje, v závislosti na nastavení zosobnění (ale o tom až příště). Pro autentizaci typu None stačí provést v souboru web.config toto nastavení:
|
Režim autentizace Windows
Veškerá autentizace je prováděna přímo v IIS a ASP.NET ji nijak neovlivňuje. Uživatel zadává jméno a heslo do standardního okna Windows. IIS podporuje základní typy autentizace Anonymous, Basic, NTLM. Po úspěšné autentizaci se přístup k informacím provádí v kontextu autentizovaného uživatele. Pro Windows autentizaci stačí provést v souboru web.config toto nastavení:
|
Protože při tomto způsobu autentizace musí mít uživatel účet buď na serveru nebo v doméně, není tento způsob vhodný pro rozsáhlá řešení na internetu. Své uplatnění najde zejména v intranetových řešeních ve firmách, kde je používáno doménové prostředí firmy Microsoft. Nastavování typů autentizace v IIS se provádí přímo na serveru a pokud používáte pro svoje stránky webhosting, budete se muset domluvit se správcem serveru. Pokud bude větší zájem o podrobný návod jak konfigurovat typy autentizace v IIS, vrátím se k tomuto v některém z dalších článků.
Režim autentizace Passport
ASP.NET při tomto způsobu autentizace předává řízení centrální službě MS Passport, která zajistí ověření identity uživatele. Pro použití Passport Autentifikace je třeba v souboru web.config provést toto nastavení:
|
Proměnná redirectURL
obsahuje adresu, na kterou bude uživatel přesměrován k ověření identity. Více o použití autentizace pomocí MS passport najdete na adrese www.passport.com. Údaje o uživateli jsou uloženy na centrálním serveru u firmy Microsoft.
Režim autentizace Form
Jako poslední jsem si nechal režim autentizace Form. Jde o režim, který si může vývojář upravit k obrazu svému. Při ověřování identity uživatele se nemusíme omezovat pouze na uživatele definované v doméně či na serveru, ale můžeme provádět ověřování vůči seznamu uživatelů v souboru web.config. Režim autentizace Form tímto vývojáři uvolňuje ruce a je jen na něm, vůči jaké databázi či jakému dalšímu zdroji dat provede ověření uživatele.
Parametrů pro nastavování Form autentizace je poměrně mnoho, proto se jim budu věnovat v samostatném článku. Jak režim Passport, tak režim Form jsou založeny na používání cookie. Při ověření identity je vytvořeno cookie, jehož platnost je dána nastavením parametrů na serveru. V příštím díle se budu podrobně zabývat režimem autentizace Form a ukáži vám, jak k ověření identity uživatele použít různé zdroje dat s informacemi o uživateli (soubor web.config, XML dokument a další).
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Vlastní web pomocí AI už může vytvořit opravdu každý
8. srpna 2024 -
10 nejpopulárnějších programovacích jazyků a jejich využití
9. listopadu 2023
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024