Verbindingsgegevens beveiligen
Het beveiligen van de toegang tot uw gegevensbron is een van de belangrijkste doelen bij het beveiligen van een toepassing. Een verbindingsreeks geeft een mogelijk beveiligingsprobleem weer als deze niet is beveiligd. Het opslaan van verbindingsinformatie in tekst zonder opmaak of het behouden ervan in het geheugen loopt gevaar voor uw hele systeem. Verbindingsreeksen die zijn ingesloten in uw broncode, kunnen worden gelezen met behulp van de Ildasm.exe (IL Disassembler) om algemene tussenliggende taal (CIL) in een gecompileerde assembly weer te geven.
Beveiligingsproblemen met betrekking tot verbindingsreeks s kunnen zich voordoen op basis van het type verificatie dat wordt gebruikt, hoe verbindingsreeks s in het geheugen en op schijf worden bewaard, en de technieken die worden gebruikt om ze tijdens runtime samen te stellen.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
Windows-verificatie gebruiken
Om de toegang tot uw gegevensbron te beperken, moet u verbindingsgegevens beveiligen, zoals de gebruikersnaam, het wachtwoord en de naam van de gegevensbron. Om te voorkomen dat gebruikersgegevens worden weergegeven, raden we u aan Windows-verificatie (ook wel geïntegreerde beveiliging genoemd) te gebruiken voor on-premises gegevensbronnen. (Wanneer u echter verbinding maakt met Azure SQL, moet u deze gebruiken Beheerde identiteiten voor Azure-resources.) Windows-verificatie wordt opgegeven in een verbindingsreeks met behulp van de Integrated Security
of Trusted_Connection
trefwoorden, waardoor u geen gebruikers-id en wachtwoord meer hoeft te gebruiken. Wanneer u Windows-verificatie gebruikt, worden gebruikers geverifieerd door Windows en wordt de toegang tot server- en databasebronnen bepaald door machtigingen te verlenen aan Windows-gebruikers en -groepen.
Voor situaties waarin het niet mogelijk is Om Windows-verificatie te gebruiken, moet u extra zorg gebruiken omdat gebruikersreferenties worden weergegeven in de verbindingsreeks. In een ASP.NET-toepassing kunt u een Windows-account configureren als een vaste identiteit die wordt gebruikt om verbinding te maken met databases en andere netwerkbronnen. U schakelt imitatie in het identiteitselement in het bestand web.config in en geeft een gebruikersnaam en wachtwoord op.
<identity impersonate="true"
userName="MyDomain\UserAccount"
password="*****" />
Het vaste identiteitsaccount moet een account met lage bevoegdheden zijn dat alleen de benodigde machtigingen in de database heeft gekregen. Bovendien moet u het configuratiebestand versleutelen, zodat de gebruikersnaam en het wachtwoord niet worden weergegeven in duidelijke tekst.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die in deze procedure wordt beschreven, vereist een zeer hoge mate van vertrouwen in de toepassing en brengt risico's met zich mee die niet aanwezig zijn in andere stromen. U moet deze stroom alleen gebruiken wanneer andere veiligere stromen, zoals beheerde identiteiten, niet haalbaar zijn.
UDL-bestanden (Universal Data Link) niet gebruiken
Vermijd het opslaan van verbindingsreeks s voor een OleDbConnection in een UDL-bestand (Universal Data Link). UDF's worden opgeslagen in duidelijke tekst en kunnen niet worden versleuteld. Een UDL-bestand is een externe bron op basis van bestanden voor uw toepassing en kan niet worden beveiligd of versleuteld met .NET Framework.
Injectieaanvallen voorkomen met opbouwfuncties voor verbindingsreeksen
Een verbindingsreeks injectieaanval kan optreden wanneer dynamische tekenreekssamenvoeging wordt gebruikt om verbindingsreeks s te bouwen op basis van gebruikersinvoer. Als de gebruikersinvoer niet is gevalideerd en schadelijke tekst of tekens niet zijn ontsnapt, kan een aanvaller mogelijk toegang krijgen tot gevoelige gegevens of andere bronnen op de server. Om dit probleem op te lossen, heeft ADO.NET 2.0 nieuwe verbindingsreeks builder-klassen geïntroduceerd om verbindingsreeks syntaxis te valideren en ervoor te zorgen dat er geen aanvullende parameters worden geïntroduceerd. Zie Opbouwfuncties voor verbindingsreeksen voor meer informatie.
Persist Security Info=False
gebruiken
De standaardwaarde is Persist Security Info
onwaar. We raden u aan deze standaardwaarde te gebruiken in alle verbindingsreeks s. Instellen Persist Security Info
op true
of yes
toestaan dat beveiligingsgevoelige informatie, inclusief de gebruikers-id en het wachtwoord, worden verkregen via een verbinding nadat deze is geopend. Wanneer Persist Security Info
deze optie is ingesteld op false
of no
, worden beveiligingsgegevens verwijderd nadat deze zijn gebruikt om de verbinding te openen, zodat een niet-vertrouwde bron geen toegang heeft tot beveiligingsgevoelige informatie.
Configuratiebestanden versleutelen
U kunt ook verbindingsreeks opslaan in configuratiebestanden, waardoor u ze niet meer hoeft in te sluiten in de code van uw toepassing. Configuratiebestanden zijn standaard-XML-bestanden waarvoor .NET Framework een gemeenschappelijke set elementen heeft gedefinieerd. Verbindingsreeksen in configuratiebestanden worden doorgaans opgeslagen in het <element connectionStrings> in de app.config voor een Windows-toepassing of het web.config-bestand voor een ASP.NET toepassing. Zie Verbindingsreeksen en configuratiebestanden voor meer informatie over de basisprincipes van het opslaan, ophalen en versleutelen van verbindingsreeks uit configuratiebestanden.