Ochrana informací o připojení
Ochrana přístupu ke zdroji dat je jedním z nejdůležitějších cílů při zabezpečení aplikace. Připojovací řetězec představuje potenciální ohrožení zabezpečení, pokud není zabezpečené. Ukládání informací o připojení ve formátu prostého textu nebo jejich uchování v paměti riskuje ohrožení celého systému. Připojovací řetězce vložené do zdrojového kódu lze číst pomocí Ildasm.exe (IL Disassembler) k zobrazení společného zprostředkujícího jazyka (CIL) v kompilovaném sestavení.
Ohrožení zabezpečení zahrnující připojovací řetězec mohou nastat na základě typu použitého ověřování, způsobu, jakým jsou připojovací řetězec trvalé v paměti a na disku, a techniky používané k jejich sestavení za běhu.
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Použít ověřování systému Windows
Pokud chcete omezit přístup ke zdroji dat, musíte zabezpečit informace o připojení, jako je ID uživatele, heslo a název zdroje dat. Pokud se chcete vyhnout zveřejnění informací o uživatelích, doporučujeme pro místní zdroje dat použít ověřování systému Windows (někdy označované jako integrované zabezpečení). (Při připojování k Azure SQL byste ale měli použít Spravované identity pro prostředky Azure.) Ověřování systému Windows se zadává v připojovací řetězec pomocí Integrated Security
klíčových slov a Trusted_Connection
eliminuje nutnost používat ID uživatele a heslo. Při použití ověřování systému Windows se uživatelé ověřují systémem Windows a přístup k serverovým a databázovým prostředkům se určuje udělením oprávnění uživatelům a skupinám Windows.
V situacích, kdy není možné použít ověřování systému Windows, je nutné použít dodatečnou péči, protože přihlašovací údaje uživatele jsou vystaveny v připojovací řetězec. V aplikaci ASP.NET můžete účet systému Windows nakonfigurovat jako pevnou identitu, která se používá pro připojení k databázím a dalším síťovým prostředkům. V elementu identity v souboru web.config povolíte zosobnění a zadáte uživatelské jméno a heslo.
<identity impersonate="true"
userName="MyDomain\UserAccount"
password="*****" />
Pevný účet identity by měl být účet s nízkými oprávněními, kterému byla udělena pouze potřebná oprávnění v databázi. Kromě toho byste měli konfigurační soubor zašifrovat tak, aby uživatelské jméno a heslo nebyly zpřístupněny ve formátu prostého textu.
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Ověřovací tok popsaný v tomto postupu vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok byste měli použít jenom v případě, že jiné bezpečnější toky, jako jsou spravované identity, nejsou přijatelné.
Nepoužívejte soubory UDL (Universal Data Link).
Vyhněte se ukládání připojovací řetězec pro OleDbConnection soubor UDL (Universal Data Link). Seznamy definované uživatelem jsou uložené ve formátu prostého textu a nelze je zašifrovat. Soubor UDL je externím souborem založeným na souborech pro vaši aplikaci a nelze ho zabezpečit ani zašifrovat pomocí rozhraní .NET Framework.
Vyhněte se útokům prostřednictvím injektáže pomocí tvůrce připojovacích řetězců
Útok připojovací řetězec injektáže může nastat, když se k sestavení připojovací řetězec na základě uživatelského vstupu používá zřetězení dynamického řetězce. Pokud se uživatelský vstup neověří a škodlivý text nebo znaky neuniknou, útočník může potenciálně získat přístup k citlivým datům nebo jiným prostředkům na serveru. Chcete-li tento problém vyřešit, ADO.NET 2.0 zavedly nové třídy tvůrce připojovací řetězec pro ověření připojovací řetězec syntaxe a ujistěte se, že nejsou zavedeny další parametry. Další informace naleznete v tématu Tvůrce připojovacích řetězců.
Použití Persist Security Info=False
Výchozí hodnota Persist Security Info
je false. Doporučujeme tuto výchozí hodnotu použít ve všech připojovací řetězec. Nastavení Persist Security Info
nebo true
yes
povolení zabezpečení citlivých informací, včetně ID uživatele a hesla, se po otevření získá z připojení. Pokud Persist Security Info
je nastavená hodnota false
nebo no
, bezpečnostní informace se po použití k otevření připojení zahodí, aby nedůvěryhodný zdroj neměl přístup k informacím citlivým na zabezpečení.
Šifrování konfiguračních souborů
Můžete také ukládat připojovací řetězec do konfiguračních souborů, což eliminuje nutnost jejich vložení do kódu vaší aplikace. Konfigurační soubory jsou standardní soubory XML, pro které rozhraní .NET Framework definovalo společnou sadu prvků. Připojovací řetězce v konfiguračních souborech se obvykle ukládají uvnitř elementu connectionStrings> v souboru app.config pro aplikaci pro Windows nebo v souboru web.config pro aplikaci ASP.NET.< Další informace o základech ukládání, načítání a šifrování připojovací řetězec z konfiguračních souborů najdete v tématu Připojovací řetězce a konfigurační soubory.