Dela via


Skydda anslutningsinformation

Att skydda åtkomsten till din datakälla är ett av de viktigaste målen när du skyddar ett program. En anslutningssträng utgör en potentiell säkerhetsrisk om den inte skyddas. Att lagra anslutningsinformation i oformaterad text eller spara den i minnet riskerar att äventyra hela systemet. Anslutningssträngar som är inbäddade i källkoden kan läsas med hjälp av Ildasm.exe (IL Disassembler) för att visa det gemensamma mellanliggande språket (CIL) i en kompilerad sammansättning.

Säkerhetsrisker som rör anslutningssträng kan uppstå baserat på vilken typ av autentisering som används, hur anslutningssträng sparas i minnet och på disken samt de tekniker som används för att konstruera dem vid körning.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Använd Windows-autentisering

För att begränsa åtkomsten till din datakälla måste du skydda anslutningsinformation som användar-ID, lösenord och datakällans namn. För att undvika att exponera användarinformation rekommenderar vi att du använder Windows-autentisering (kallas ibland integrerad säkerhet) för lokala datakällor. (När du ansluter till Azure SQL bör du dock använda Hanterade identiteter för Azure-resurser.) Windows-autentisering anges i en anslutningssträng med hjälp av nyckelorden Integrated Security ellerTrusted_Connection, vilket eliminerar behovet av att använda ett användar-ID och lösenord. När du använder Windows-autentisering autentiseras användarna av Windows, och åtkomsten till server- och databasresurser bestäms genom att ge behörigheter till Windows-användare och -grupper.

I situationer där det inte går att använda Windows-autentisering måste du vara extra försiktig eftersom användarautentiseringsuppgifterna exponeras i anslutningssträng. I ett ASP.NET program kan du konfigurera ett Windows-konto som en fast identitet som används för att ansluta till databaser och andra nätverksresurser. Du aktiverar personifiering i identitetselementet i filen web.config och anger ett användarnamn och lösenord.

<identity impersonate="true"
        userName="MyDomain\UserAccount"
        password="*****" />

Det fasta identitetskontot ska vara ett konto med låg behörighet som endast har beviljats nödvändiga behörigheter i databasen. Dessutom bör du kryptera konfigurationsfilen så att användarnamnet och lösenordet inte exponeras i klartext.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren kräver mycket stort förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när andra säkrare flöden, till exempel hanterade identiteter, inte är livskraftiga.

Undvik att lagra anslutningssträng för en OleDbConnection i en UDL-fil (Universal Data Link). UDL:er lagras i klartext och kan inte krypteras. En UDL-fil är en extern filbaserad resurs i ditt program och den kan inte skyddas eller krypteras med hjälp av .NET Framework.

Undvik inmatningsattacker med anslutningssträngsbyggare

En anslutningssträng inmatningsattack kan inträffa när dynamisk strängsammanfogning används för att skapa anslutningssträng baserat på användarindata. Om användarens indata inte verifieras och skadlig text eller tecken inte är undantagna kan en angripare komma åt känsliga data eller andra resurser på servern. För att lösa det här problemet introducerade ADO.NET 2.0 nya anslutningssträng builder-klasser för att verifiera anslutningssträng syntax och se till att ytterligare parametrar inte introduceras. Mer information finns i Anslutningssträngsbyggare.

Använda Persist Security Info=False

Standardvärdet för Persist Security Info är falskt. Vi rekommenderar att du använder det här standardvärdet i alla anslutningssträng. Inställning Persist Security Info till eller yes tillåter att true säkerhetskänslig information, inklusive användar-ID och lösenord, hämtas från en anslutning när den har öppnats. När Persist Security Info är inställt på false eller noignoreras säkerhetsinformationen när den används för att öppna anslutningen, vilket säkerställer att en ej betrodd källa inte har åtkomst till säkerhetskänslig information.

Kryptera konfigurationsfiler

Du kan också lagra anslutningssträng i konfigurationsfiler, vilket eliminerar behovet av att bädda in dem i programmets kod. Konfigurationsfiler är XML-standardfiler som .NET Framework har definierat en gemensam uppsättning element för. Anslutningssträngar i konfigurationsfiler lagras vanligtvis i <connectionStrings-elementet> i app.config för ett Windows-program eller web.config-filen för ett ASP.NET-program. Mer information om grunderna för att lagra, hämta och kryptera anslutningssträng från konfigurationsfiler finns i Anslutningssträngar och Konfigurationsfiler.

Se även