Share via


Scenarios voor applicatiebeveiliging in SQL Server

ADO.NET downloaden

Er is geen enkele juiste manier om een beveiligde SQL Server-clienttoepassing te maken. Elke toepassing is uniek in de vereisten, de implementatieomgeving en de gebruikerspopulatie. Een toepassing die redelijk veilig is wanneer deze in eerste instantie wordt geïmplementeerd, kan na verloop van tijd minder veilig worden. Het is onmogelijk om met elke nauwkeurigheid te voorspellen welke bedreigingen in de toekomst kunnen ontstaan.

SQL Server, als product, is in veel versies ontwikkeld met de nieuwste beveiligingsfuncties waarmee ontwikkelaars beveiligde databasetoepassingen kunnen maken. Beveiliging komt echter niet in de doos; het vereist continue bewaking en bijwerken.

Veelvoorkomende bedreigingen

Ontwikkelaars moeten inzicht krijgen in beveiligingsrisico's, de hulpprogramma's om ze tegen te gaan en hoe ze zelf toegebrachte beveiligingsgaten kunnen voorkomen. Beveiliging kan het beste worden beschouwd als een keten, waarbij een onderbreking in elke koppeling de kracht van het geheel in gevaar komt. De volgende lijst bevat enkele veelvoorkomende beveiligingsrisico's die in meer detail worden besproken in de onderwerpen in deze sectie.

SQL-injectie

SQL-injectie is het proces waarmee een kwaadwillende gebruiker Transact-SQL instructies invoert in plaats van geldige invoer. Als de invoer rechtstreeks aan de server wordt doorgegeven zonder te worden gevalideerd en als de toepassing per ongeluk de geïnjecteerde code uitvoert, heeft de aanval het potentieel om gegevens te beschadigen of te vernietigen. U kunt aanvallen met SQL Server-injectie voorkomen door opgeslagen procedures en geparameteriseerde opdrachten te gebruiken, dynamische SQL te voorkomen en machtigingen voor alle gebruikers te beperken.

Uitbreiding van bevoegdheden

Verhoging van bevoegdheden treedt op wanneer een gebruiker de rechten van een vertrouwd account kan overnemen, zoals die van een eigenaar of beheerder. Voer altijd uit onder gebruikersaccounts met de minste bevoegdheden en wijs alleen de benodigde machtigingen toe. Vermijd het gebruik van beheerders- of eigenaarsaccounts voor het uitvoeren van code. Dit beperkt de hoeveelheid schade die kan optreden als een aanval slaagt. Wanneer u taken uitvoert waarvoor aanvullende machtigingen zijn vereist, gebruikt u procedureondertekening of imitatie van identiteit alleen voor de duur van de taak. U kunt opgeslagen procedures ondertekenen met certificaten of imitatie gebruiken om tijdelijk machtigingen toe te wijzen.

Onderzoek en intelligente observatie

Een testaanval kan foutberichten gebruiken die door een toepassing worden gegenereerd om te zoeken naar beveiligingsproblemen. Implementeer foutafhandeling in alle procedurele code om te voorkomen dat SQL Server-foutgegevens worden geretourneerd aan de eindgebruiker.

Authenticatie

Er kan een aanval op verbindingsreeksinjectie optreden bij het gebruik van SQL Server-aanmeldingen als een verbindingsreeks op basis van gebruikersinvoer tijdens runtime wordt samengesteld. Als de verbindingsreeks niet wordt gecontroleerd op geldige trefwoordparen, kan een aanvaller extra tekens invoegen, mogelijk toegang krijgen tot gevoelige gegevens of andere resources op de server. Gebruik waar mogelijk Windows-verificatie. Als u SQL Server-aanmeldingen moet gebruiken, gebruikt u de SqlConnectionStringBuilder opdracht om verbindingsreeksen tijdens runtime te maken en te valideren.

Passwords

Veel aanvallen slagen omdat een indringer een wachtwoord voor een bevoegde gebruiker kon verkrijgen of raden. Wachtwoorden zijn uw eerste verdedigingslinie tegen indringers, dus het instellen van sterke wachtwoorden is essentieel voor de beveiliging van uw systeem. Wachtwoordbeleid maken en afdwingen voor verificatie in gemengde modus.

Wijs altijd een sterk wachtwoord toe aan het sa account, zelfs wanneer u Windows-verificatie gebruikt.

In deze sectie

Veilige dynamische SQL schrijven in SQL Server
Beschrijft technieken voor het schrijven van beveiligde dynamische SQL met behulp van opgeslagen procedures.

Volgende stappen