Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A ADO.NET korai verzióiban az összefűzött sztringértékekkel rendelkező kapcsolati sztringek fordítási idejének ellenőrzése nem történt meg, így futásidőben helytelen kulcsszó generált egy ArgumentException. Minden .NET-keretrendszer adatszolgáltató különböző szintaxist támogatott kapcsolati sztring kulcsszavakhoz, ami megnehezítette az érvényes kapcsolati sztring manuális létrehozását. A probléma megoldásához ADO.NET 2.0 új kapcsolati sztring-szerkesztőket vezetett be az egyes .NET-keretrendszer adatszolgáltatókhoz. Minden adatszolgáltató tartalmaz egy szigorúan típusos kapcsolati karakterlánc összeállító osztályt, amely a következőtől DbConnectionStringBuilder öröklődik. Az alábbi táblázat a .NET-keretrendszer adatszolgáltatókat és a hozzájuk tartozó kapcsolati sztring szerkesztőosztályokat sorolja fel.
Kapcsolati karakterlánc injektálásos támadások
Kapcsolati sztring injektálási támadás akkor fordulhat elő, ha dinamikus sztringösszefűzést használnak a felhasználói bemeneten alapuló kapcsolati sztring létrehozásához. Ha a sztring nincs érvényesítve, és a rosszindulatú szövegek vagy karakterek nem szöknek meg, a támadók esetleg hozzáférhetnek a kiszolgálón lévő bizalmas adatokhoz vagy más erőforrásokhoz. Például, egy támadó indíthat támadást egy pontosvessző megadásával, és egy további érték hozzáfűzésével. A kapcsolati karakterláncot egy „utolsó nyer” elvű algoritmus elemzi, és az ellenséges bemenetet a rendszer egy jogos értékre cseréli.
A kapcsolati sztring szerkesztőosztályok célja a találgatások kiküszöbölése, valamint a szintaxishibák és biztonsági rések elleni védelem. Az egyes adatszolgáltatók által engedélyezett ismert kulcs-érték pároknak megfelelő metódusokat és tulajdonságokat biztosítanak. Minden osztály egy rögzített szinonimagyűjteményt tart fenn, és szinonimából lefordítható a megfelelő jól ismert kulcsnévre. Érvényes kulcs/érték párok ellenőrzése történik, és egy érvénytelen pár kivételt jelez. Emellett az injektált értékeket biztonságosan kezelik.
Az alábbi példa bemutatja, hogyan SqlConnectionStringBuilder kezeli a beszúrt extra értéket a Initial Catalog beállításhoz.
Dim builder As New System.Data.SqlClient.SqlConnectionStringBuilder
builder("Data Source") = "(local)"
builder("Integrated Security") = True
builder("Initial Catalog") = "AdventureWorks;NewValue=Bad"
Console.WriteLine(builder.ConnectionString)
System.Data.SqlClient.SqlConnectionStringBuilder builder =
new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);
Fontos
A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.
A kimenet azt mutatja, hogy a SqlConnectionStringBuilder ezt helyesen kezelte azzal, hogy a plusz értéket dupla idézőjelbe helyezte, ahelyett hogy új kulcs/érték párosként fűzte volna hozzá a kapcsolati sztringhez.
data source=(local);Integrated Security=True;
initial catalog="AdventureWorks;NewValue=Bad"
Kapcsolati sztring összeállítása konfigurációs fájlokból
Ha a kapcsolati sztring bizonyos elemei előre ismertek, egy konfigurációs fájlban tárolhatók, és futásidőben lekérhetők egy teljes kapcsolati sztring létrehozásához. Előfordulhat például, hogy az adatbázis neve előre ismert, a kiszolgáló neve azonban nem.
Egy kapcsolati sztring-szerkesztő egyik túlterhelt konstruktora argumentumként használString, amely lehetővé teszi egy részleges kapcsolati sztring megadását, amelyet aztán a felhasználói bemenetből lehet elvégezni. A részleges kapcsolati sztring egy konfigurációs fájlban tárolható, és futásidőben kérhető le.
Megjegyzés
A System.Configuration névtér programozott hozzáférést biztosít a webalkalmazásokhoz és a WebConfigurationManagerConfigurationManager Windows-alkalmazásokhoz használt konfigurációs fájlokhoz. A kapcsolati sztring és a konfigurációs fájlok használatával kapcsolatos további információkért lásd: Kapcsolati sztringek és konfigurációs fájlok.