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í:

  1. 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.
  2. 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ě).
  3. 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>.

<authentication mode=“Windows|Forms|Passport|None“>
…další volby v závislosti na zvoleném režimu autentizace
</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í:

<authentication mode=“None“>
</authentication>

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í:

<authentication mode=“Windows“>
</authentication>

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í:

<authentication mode=“Passport“>
   <passport redirectUrl=“redirectURL“/>
</authentication>

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.

Žádný příspěvek v diskuzi

Odpovědět