Beveiliging in LINQ naar SQL
Beveiligingsrisico's zijn altijd aanwezig wanneer u verbinding maakt met een database. Hoewel LINQ naar SQL mogelijk een aantal nieuwe manieren bevat om met gegevens in SQL Server te werken, biedt het geen extra beveiligingsmechanismen.
Toegangsbeheer en verificatie
LINQ naar SQL heeft geen eigen gebruikersmodel of verificatiemechanismen. Gebruik SQL Server Security om de toegang tot de database, databasetabellen, weergaven en opgeslagen procedures te beheren die zijn toegewezen aan uw objectmodel. Verwijs de minimaal vereiste toegang tot gebruikers en vereist sterke wachtwoorden voor gebruikersverificatie.
Toewijzings- en schemagegevens
Toewijzing van SQL-CLR-typen en databaseschemagegevens in uw objectmodel of extern toewijzingsbestand is beschikbaar voor iedereen met toegang tot die bestanden in het bestandssysteem. Stel dat schemagegevens beschikbaar zijn voor iedereen die toegang heeft tot het objectmodel of het externe toewijzingsbestand. Als u uitgebreidere toegang tot schemagegevens wilt voorkomen, gebruikt u bestandsbeveiligingsmechanismen voor het beveiligen van bronbestanden en het toewijzen van bestanden.
Verbindingsreeksen
Het gebruik van wachtwoorden in verbindingsreeks s moet waar mogelijk worden vermeden. Niet alleen is een verbindingsreeks een beveiligingsrisico op zichzelf, maar de verbindingsreeks kan ook in duidelijke tekst worden toegevoegd aan het objectmodel of extern toewijzingsbestand wanneer u het opdrachtregelprogramma Object Relational Designer of SQLMetal gebruikt. Iedereen met toegang tot het objectmodel of extern toewijzingsbestand via het bestandssysteem kan het verbindingswachtwoord zien (als het is opgenomen in de verbindingsreeks).
Als u dergelijke risico's wilt minimaliseren, gebruikt u geïntegreerde beveiliging om een vertrouwde verbinding te maken met SQL Server. Als u deze methode gebruikt, hoeft u geen wachtwoord op te slaan in de verbindingsreeks. Zie SQL Server-beveiliging voor meer informatie.
Als er geen geïntegreerde beveiliging is, is een wachtwoord zonder tekst nodig in de verbindingsreeks. De beste manier om uw verbindingsreeks te beveiligen, in toenemende volgorde van risico's, is als volgt:
Geïntegreerde beveiliging gebruiken.
Beveilig verbindingsreeks met wachtwoorden en minimaliseer het doorgeven van verbindingsreeks s.
Gebruik een System.Data.SqlClient.SqlConnection klasse in plaats van een verbindingsreeks omdat hiermee de duur van de blootstelling wordt beperkt. De LINQ naar SQL-klasse System.Data.Linq.DataContext kan worden geïnstantieerd met behulp van een SqlConnection.
Minimaliseer levensduur en aanraakpunten voor alle verbindingsreeks s.