Dela via


Säkerhet i LINQ till SQL

Säkerhetsrisker finns alltid när du ansluter till en databas. Även om LINQ till SQL kan innehålla några nya sätt att arbeta med data i SQL Server, ger det inga ytterligare säkerhetsmekanismer.

Åtkomstkontroll och autentisering

LINQ till SQL har inte någon egen användarmodell eller autentiseringsmekanism. Använd SQL Server Security för att styra åtkomsten till databasen, databastabeller, vyer och lagrade procedurer som är mappade till objektmodellen. Bevilja minimalt nödvändig åtkomst till användare och kräva starka lösenord för användarautentisering.

Mappnings- och schemainformation

SQL-CLR-typmappning och databasschemainformation i objektmodellen eller den externa mappningsfilen är tillgängliga för alla med åtkomst till filerna i filsystemet. Anta att schemainformation är tillgänglig för alla som har åtkomst till objektmodellen eller den externa mappningsfilen. Om du vill förhindra mer omfattande åtkomst till schemainformation använder du filsäkerhetsmekanismer för att skydda källfiler och mappningsfiler.

Anslutningssträngar

Användning av lösenord i anslutningssträng bör undvikas när det är möjligt. Det är inte bara en anslutningssträng en säkerhetsrisk i sig, utan anslutningssträng kan också läggas till i klartext till objektmodellen eller den externa mappningsfilen när du använder kommandoradsverktyget Object Relational Designer eller SQLMetal. Alla som har åtkomst till objektmodellen eller den externa mappningsfilen via filsystemet kan se anslutningslösenordet (om det ingår i anslutningssträng).

För att minimera sådana risker använder du integrerad säkerhet för att upprätta en betrodd anslutning till SQL Server. Med den här metoden behöver du inte lagra ett lösenord i anslutningssträng. Mer information finns i SQL Server Security.

I avsaknad av integrerad säkerhet krävs ett lösenord med klartext i anslutningssträng. Det bästa sättet att skydda dina anslutningssträng i ökande riskordning är följande:

  • Använd integrerad säkerhet.

  • Skydda anslutningssträng med lösenord och minimera överföring av anslutningssträng.

  • Använd en System.Data.SqlClient.SqlConnection klass i stället för en anslutningssträng eftersom den begränsar exponeringens varaktighet. KLASSEN LINQ till SQL System.Data.Linq.DataContext kan instansieras med hjälp av en SqlConnection.

  • Minimera livslängd och beröringspunkter för alla anslutningssträng.

Se även