Sicherer DatenzugriffSecure Data Access

Wenn Sie sicheren ADO.NET-Code schreiben möchten, müssen Sie die Sicherheitsmechanismen kennen, die im zugrunde liegenden Datenspeicher oder der zugrundeliegenden Datenbank verfügbar sind.To write secure ADO.NET code, you have to understand the security mechanisms available in the underlying data store, or database. Außerdem müssen Sie die Auswirkungen anderer in Ihrer Anwendung enthaltenen Funktionen oder Komponenten auf die Sicherheit berücksichtigen.You also need to consider the security implications of other features or components that your application may contain.

Authentifizierung, Autorisierung und BerechtigungenAuthentication, Authorization and Permissions

Beim Herstellen einer Verbindung mit Microsoft SQL Server können Sie die Windows-Authentifizierung (auch als "Integrierte Sicherheit" bezeichnet) verwenden, bei der nicht die Benutzer-ID und das Kennwort übermittelt werden, sondern die Identität des jeweils aktiven Windows-Benutzers verwendet wird.When connecting to Microsoft SQL Server, you can use Windows Authentication, also known as Integrated Security, which uses the identity of the current active Windows user rather than passing a user ID and password. Die Verwendung der Windows-Authentifizierung wird dringend empfohlen, da die dabei verwendete Verbindungszeichenfolge keinerlei Benutzeranmeldeinformationen enthält, sodass diese Informationen vor unbefugtem Zugriff geschützt sind.Using Windows Authentication is highly recommended because user credentials are not exposed in the connection string. Wenn Sie für die Herstellung von Verbindungen mit SQL Server nicht auf die Windows-Authentifizierung zurückgreifen können, sollten Sie erwägen, die Verbindungszeichenfolgen zur Laufzeit mit dem SqlConnectionStringBuilder zu erstellen.If you cannot use Windows Authentication to connect to SQL Server, then consider creating connection strings at run time using the SqlConnectionStringBuilder.

Die zur Authentifizierung verwendeten Anmeldeinformationen müssen je nach der Art der Anwendung unterschiedlich behandelt werden.The credentials used for authentication need to be handled differently based on the type of application. In einer Windows Forms-Anwendung kann ein Benutzer beispielsweise aufgefordert werden, Authentifizierungsinformationen einzugeben, oder es können dessen Windows-Anmeldeinformationen verwendet werden.For example, in a Windows Forms application, the user can be prompted to supply authentication information, or the user's Windows credentials can be used. Eine Webanwendung hingegen greift auf Daten mithilfe von Anmeldeinformationen zu, die von der Anwendung selbst und nicht vom Benutzer bereitgestellt werden.However, a Web application often accesses data using credentials supplied by the application itself rather than by the user.

Welche Aktionen die Benutzer nach der Authentifizierung ausführen dürfen, hängt von den Berechtigungen ab, die ihnen erteilt wurden.Once users have been authenticated, the scope of their actions depends on the permissions that have been granted to them. Befolgen Sie dabei strikt das Prinzip der minimalen Rechtegewährung: Gewähren Sie immer nur die Berechtigungen, die absolut notwendig sind.Always follow the principle of least privilege and grant only permissions that are absolutely necessary.

Weitere Informationen finden Sie in den folgenden Ressourcen.For more information, see the following resources.

RessourceResource BeschreibungDescription
Protecting Connection Information (Schützen von Verbindungsinformationen)Protecting Connection Information Beschreibt bewährte Methoden und Techniken zum Schützen von Verbindungsinformationen, z. B. das Verwenden der geschützten Konfiguration zur Verschlüsselung von Verbindungszeichenfolgen.Describes security best practices and techniques for protecting connection information, such as using protected configuration to encrypt connection strings.
Empfehlungen für Datenzugriffs StrategienRecommendations for Data Access Strategies Enthält Empfehlungen für das Zugreifen auf Daten und das Ausführen von Datenbankoperationen.Provides recommendations for accessing data and performing database operations.
VerbindungszeichenfolgengeneratorenConnection String Builders Beschreibt, wie aus Benutzereingabe zur Laufzeit Verbindungszeichenfolgen erstellt werden können.Describes how to build connection strings from user input at run time.
Übersicht über die SQL Server-SicherheitOverview of SQL Server Security Beschreibt die SQL Server-Sicherheitsarchitektur.Describes the SQL Server security architecture.

Parametrisierte Befehle und SQL InjectionParameterized Commands and SQL Injection

Die Verwendung parametrisierter Befehle hilft beim Schutz vor SQL Injection-Angriffen, bei denen ein Angreifer einen SQL-Befehl in eine SQL-Anweisung einschleust, der die Sicherheit auf dem Server gefährdet.Using parameterized commands helps guard against SQL injection attacks, in which an attacker "injects" a command into a SQL statement that compromises security on the server. Parametrisierte Befehle schützen vor solchen Angriffen, indem sie dafür sorgen, dass Werte aus einer externen Quelle lediglich als Werte und nicht als Bestandteil einer Transact-SQL-Anweisung weitergeleitet werden.Parameterized commands guard against a SQL injection attack by ensuring that values received from an external source are passed as values only, and not part of the Transact-SQL statement. In einen Wert eingefügte Transact-SQL-Befehle werden daher nicht in der Datenquelle ausgeführt.As a result, Transact-SQL commands inserted into a value are not executed at the data source. Stattdessen werden sie nur als Parameterwert ausgewertet.Rather, they are evaluated solely as a parameter value. Parametrisierte Befehle sind aber nicht nur aus Sicherheitsgründen vorteilhaft, sondern sie stellen auch eine bequeme Methode zum Organisieren von Werten dar, die mit einer Transact-SQL-Anweisung weitergeleitet bzw. an eine gespeicherte Prozedur übergeben werden.In addition to the security benefits, parameterized commands provide a convenient method for organizing values passed with a Transact-SQL statement or to a stored procedure.

Weitere Informationen zur Verwendung parametrisierter Befehle finden Sie in den folgenden Ressourcen.For more information on using parameterized commands, see the following resources.

RessourceResource BeschreibungDescription
DataAdapter-ParameterDataAdapter Parameters Beschreibt die Verwendung von Parametern mit einem DataAdapter.Describes how to use parameters with a DataAdapter.
Ändern von Daten mit gespeicherten ProzedurenModifying Data with Stored Procedures Beschreibt das Angeben von Parametern und das Abrufen von Rückgabewerten.Describes how to specify parameters and obtain a return value.
Verwalten von Berechtigungen mit gespeicherten Prozeduren in SQL ServerManaging Permissions with Stored Procedures in SQL Server Beschreibt die Verwendung gespeicherter SQL Server-Prozeduren zum Kapseln des Datenzugriffs.Describes how to use SQL Server stored procedures to encapsulate data access.

SkriptexploitsScript Exploits

Ein Skriptexploit ist eine andere Form der Einschleusung, bei der in eine Webseite schädliche Zeichen eingeschleust werden.A script exploit is another form of injection that uses malicious characters inserted into a Web page. Der Browser überprüft die eingefügten Zeichen nicht und verarbeitet sie als Teil der Seite.The browser does not validate the inserted characters and will process them as part of the page.

Weitere Informationen finden Sie in den folgenden Ressourcen.For more information, see the following resources.

RessourceResource BeschreibungDescription
Übersicht über Skript ExploitsScript Exploits Overview Beschreibt, wie Sie sich vor Skript- und SQL-Anweisung-Exploits schützen können.Describes how to guard against scripting and SQL statement exploits.

Angriffe anhand von ausgewerteten FehlerinformationenProbing Attacks

Angreifer verwenden für ihre Angriffe häufig Informationen aus Fehlermeldungen. Diese können z. B. Aufschluss über den Namen des Servers, der Datenbank oder der Tabelle geben.Attackers often use information from an exception, such as the name of your server, database, or table, to mount an attack on your system. Da Fehlermeldungen spezifische Informationen über eine Anwendung bzw. Datenquelle enthalten können, können Sie die Anwendung bzw. Datenquelle besser schützen, indem Sie lediglich Informationen verfügbar machen, die vom Client explizit angefordert werden.Because exceptions can contain specific information about your application or data source, you can help keep your application and data source better protected by only exposing essential information to the client.

Weitere Informationen finden Sie in den folgenden Ressourcen.For more information, see the following resources.

RessourceResource BeschreibungDescription
Behandeln und Auslösen von Ausnahmen in .NETHandling and throwing exceptions in .NET Beschreibt die grundlegenden Formen der Behandlung von Ausnahmen mit der "try/catch/finally"-Struktur.Describes the basic forms of try/catch/finally structured exception handling.
Bewährte Methoden für AusnahmenBest Practices for Exceptions Beschreibt bewährte Vorgehensweisen bei der Behandlung von Ausnahmen.Describes best practices for handling exceptions.

Schützen von Microsoft Access- und Excel-DatenquellenProtecting Microsoft Access and Excel Data Sources

Microsoft Access und Microsoft Excel können dort, wo die Sicherheitsanforderungen nur minimal sind, als Datenspeicher für ADO.NET-Anwendungen fungieren.Microsoft Access and Microsoft Excel can act as a data store for an ADO.NET application when security requirements are minimal or nonexistent. Deren Sicherheitsfunktionen sind zwar zur Abschreckung unwissender Benutzer geeignet, können aber von erfahrenen Angreifern durchaus umgangen werden.Their security features are effective for deterrence, but should not be relied upon to do more than discourage meddling by uninformed users. Die physischen Datendateien für Access und Excel befinden sich im Dateisystem, und der Zugriff darauf muss für alle Benutzer gewährleistet sein.The physical data files for Access and Excel exist on the file system, and must be accessible to all users. Sie sind daher für Angriffe anfällig, bei denen Daten gestohlen oder zerstört werden, denn sie können problemlos kopiert oder bearbeitet werden.This makes them vulnerable to attacks that could result in theft or data loss since the files can be easily copied or altered. Wenn also eine robustere Sicherheit verlangt wird, verwenden Sie SQL Server oder eine andere serverbasierte Datenbank, in der die physischen Datendateien nicht aus dem Dateisystem gelesen werden können.When robust security is required, use SQL Server or another server-based database where the physical data files are not readable from the file system.

Weitere Informationen zum Schützen von Access- und Excel-Daten finden Sie in den folgenden Ressourcen.For more information on protecting Access and Excel data, see the following resources.

RessourceResource BeschreibungDescription
Sicherheitsüberlegungen und Anleitungen für den Zugriff 2007Security Considerations and Guidance for Access 2007 Beschreibt die Sicherheitsverfahren von Access 2007, wie die Verschlüsselung von Dateien, die Verwaltung von Kennwörtern und die Umwandlung von Datenbanken in die neuen Formate ACCDB und ACCDE sowie die Verwendung anderer Sicherheitsoptionen.Describes security techniques for Access 2007 such encrypting files, administering passwords, converting databases to the new ACCDB and ACCDE formats, and using other security options.
Grundlegendes zur Rolle der Arbeitsgruppen-Informationsdateien in Access SecurityUnderstanding the Role of Workgroup Information Files in Access Security Erläutert die Rolle und die Beziehung der Arbeitsgruppeninformationsdatei in der Access 2003-Sicherheit.Explains the role and relationship of the workgroup information file in Access 2003 security.
Häufig gestellte Fragen zu Microsoft Access Security für Microsoft Access-Versionen 2,0 bis 2000Frequently Asked Questions About Microsoft Access Security for Microsoft Access versions 2.0 through 2000 Herunterladbare Version der Antworten auf häufig gestellte Fragen (FAQ) zum Thema "Sicherheit in Microsoft Access".Downloadable version of the Microsoft Access Security FAQ.

Enterprise ServicesEnterprise Services

COM+ enthält ein eigenes Sicherheitsmodell, das auf die Windows NT-Konten und den Prozess-/Threadidentitätswechsel zurückgreift.COM+ contains its own security model that relies on Windows NT accounts and process/thread impersonation. Der System.EnterpriseServices-Namespace stellt Wrapper bereit, die es .NET-Anwendungen ermöglichen, über die ServicedComponent-Klasse verwalteten Code mit COM+-Sicherheitsdiensten zu integrieren.The System.EnterpriseServices namespace provides wrappers that allow .NET applications to integrate managed code with COM+ security services through the ServicedComponent class.

Weitere Informationen finden Sie in der folgenden Ressource:For more information, see the following resource.

RessourceResource BeschreibungDescription
Rollenbasierte SicherheitRole-Based Security Erläutert, wie verwalteter Code mit COM+-Sicherheitsdiensten integriert werden kann.Discusses how to integrate managed code with COM+ security services.

Interoperation mit nicht verwaltetem CodeInteroperating with Unmanaged Code

.NET Framework ermöglicht die Interaktion mit nicht verwaltetem Code, darunter COM-Komponenten, COM+-Diensten, externen Typbibliotheken und vielen Betriebssystemdiensten.The .NET Framework provides for interaction with unmanaged code, including COM components, COM+ services, external type libraries, and many operating system services. Beim Arbeiten mit nicht verwaltetem Code wird die "Sicherheitszone" des verwalteten Codes verlassen.Working with unmanaged code involves going outside the security perimeter for managed code. Sowohl Ihr Code als auch jeder Code, der Ihren Code aufruft, muss eine Berechtigung für nicht verwalteten Code besitzen (SecurityPermission mit UnmanagedCode-Flag).Both your code and any code that calls it must have unmanaged code permission (SecurityPermission with the UnmanagedCode flag specified). Nicht verwalteter Code kann für Ihre Anwendung unbeabsichtigte Sicherheitslücken bedeuten.Unmanaged code can introduce unintended security vulnerabilities into your application. Deshalb sollten Sie mit nicht verwaltetem Code nur interagieren, wenn dies absolut notwendig ist.Therefore, you should avoid interoperating with unmanaged code unless it is absolutely necessary.

Weitere Informationen finden Sie in den folgenden Ressourcen.For more information, see the following resources.

RessourceResource BeschreibungDescription
Interoperabilität mit nicht verwaltetem CodeInteroperating with Unmanaged Code Enthält Themen, die beschreiben, wie COM-Komponenten für .NET Framework und .NET Framework-Komponenten für COM verfügbar gemacht werden sollten.Contains topics describing how to expose COM components to the .NET Framework and how to expose .NET Framework components to COM.
Erweiterte COM-InteroperabilitätAdvanced COM Interoperability Enthält zusätzliche Themen, in denen es u. a. um primäre Interopassemblys, Threading und benutzerdefiniertes Marshalling geht.Contains advanced topics such as primary interop assemblies, threading and custom marshaling.

Siehe auchSee also