|
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
|
Übersetzung
Original
|
Sichern des Datenzugriffs
Verbindungszeichenfolgen
Speichern Sie Verbindungszeichenfolgen nicht in einer Seite. Vermeiden Sie beispielsweise, Verbindungszeichenfolgen als deklarative Eigenschaften des SqlDataSource-Steuerelements oder anderer Datenquellensteuerelemente festzulegen. Speichern Sie stattdessen Verbindungszeichenfolgen in der Datei Web.config der Site. Ein Beispiel finden Sie unter Gewusst wie: Sichern von Verbindungszeichenfolgen bei der Verwendung von Datenquellensteuerelementen. Speichern Sie Verbindungszeichenfolgen nicht als Nur-Text. Damit die Verbindung zum Datenbankserver sicher bleibt, sollten die Verbindungszeichenfolgeninformationen in der Konfiguration mithilfe von geschützter Konfiguration verschlüsselt werden. Weitere Informationen finden Sie unter Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration.
Herstellen von Verbindungen zu SQL Server mithilfe der integrierten Sicherheit
SQL Server-Datenbankberechtigungen
Beschränken von SQL-Operationen
SQL Server Express Edition
Als Testdatenbank bei der Entwicklung Ihrer Webanwendung. Zum Bereitstellen Ihrer Anwendung kann die Datenbank von der SQL Server Express Edition auf eine Produktionsinstanz von SQL Server übertragen werden. In einer Website, die mit Identitätswechsel arbeitet, und in der Sie die Berechtigungen des imitierten Benutzers kontrollieren können. In der Praxis empfiehlt sich diese Vorgehensweise nur für Anwendungen, die in einem lokalen Netzwerk laufen, nicht aber für öffentliche Websites. Speichern Sie die MDF-Datei im Ordner App_Data der Site, da der Inhalt dieses Ordners nicht an direkte HTTP-Anforderungen zurückgegeben wird. Darüber hinaus sollten Sie ASP.NET in IIS und dem HttpForbiddenHandler in ASP.NET die Erweiterung .mdf zuordnen. Dies geschieht mithilfe des folgenden Elements in der Datei Web.config der Site: <httpHandlers> <add verb="*" path="*.mdf" type="System.Web.HttpForbiddenHandler" /> </httpHandlers>
Informationen zur Zuordnung einer Dateinamenerweiterung zu ASP.NET in IIS finden Sie unter Gewusst wie: Registrieren von HTTP-Handlern.
Microsoft Access-Datenbanken
Speichern Sie die MDB-Datei im Ordner App_Data Ihrer Site, da der Inhalt dieses Ordners nicht an direkte HTTP-Anforderungen zurückgegeben wird. Darüber hinaus sollten Sie ASP.NET in IIS und dem HttpForbiddenHandler in ASP.NET die Erweiterung .mdb zuordnen. Dies geschieht mithilfe des folgenden Elements in der Datei Web.config der Site: <httpHandlers> <add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" /> </httpHandlers>
Informationen zur Zuordnung einer Dateinamenerweiterung zu ASP.NET in IIS finden Sie unter Gewusst wie: Registrieren von HTTP-Handlern. Geben Sie den Benutzerkonten, die Lese- und Schreibzugriff auf die MDB-Datei haben sollen, die entsprechenden Rechte. Falls die Website anonymen Zugriff unterstützt, handelt es sich dabei in der Regel um das lokale ASPNET-Benutzerkonto oder das NETWORK SERVICE-Konto. Da Access für das Sperren eine LDB-Datei erstellen muss, benötigt das Benutzerkonto Schreibberechtigungen für den Ordner, der die MDB-Datei enthält. Verwenden Sie für das Verbinden mit einer kennwortgeschützten Datenbank nicht das AccessDataSource-Steuerelement, weil das AccessDataSource-Steuerelement die Weitergabe von Anmeldeinformationen nicht unterstützt. Verwenden Sie stattdessen das SqlDataSource-Steuerelement mit dem ODBC-Anbieter, und übergeben Sie die Anmeldeinformationen in der Verbindungszeichenfolge. Schützen Sie dabei die Verbindungszeichenfolge, wie es in diesem Thema unter Verbindungszeichenfolgen beschrieben ist.
XML-Dateien
Script-Injection Ein Script-Injection-Angriff ist der Versuch, ein ausführbares Skript an Ihre Anwendung zu senden, mit der Absicht, es von anderen Benutzern ausführen zu lassen. Bei einem typischen Script-Injection-Angriff wird Skript an eine Seite gesendet, die dieses in einer Datenbank speichert. Die Daten werden dann von einem anderen Benutzer angezeigt, der unwissentlich den Code ausführt. SQL-Injection Bei einem SQL-Injection-Angriff wird versucht, die Datenbank (und potenziell den Computer, auf dem sie ausgeführt wird) zu gefährden. Dazu werden SQL-Befehle erstellt, die anstelle von oder zusätzlich zu den Befehlen ausgeführt werden, die Sie in Ihre Anwendung integriert haben.
Allgemeine Richtlinien
Verwenden Sie, wann immer möglich, Validierungssteuerelemente zur Beschränkung von Benutzereingaben auf zulässige Werte. Stellen Sie vor der Ausführung des Servercodes stets sicher, dass der Wert der IsValid-Eigenschaft true ist. Ist dieser Wert false, dann bedeutet dies, dass die Überprüfung durch mindestens ein Validierungssteuerelement fehlgeschlagen ist. Führen Sie stets eine serverseitige Validierung aus. Dies sollte selbst dann geschehen, wenn der Browser eine clientseitige Validierung ausführt, um sich vor Benutzern zu schützen, die die clientseitige Validierung umgehen. Dies gilt besonders für CustomValidator-Steuerelemente. Verwenden Sie nicht nur clientseitige Validierungslogik. Validieren Sie Benutzereingaben immer erneut in der Geschäftsebene Ihrer Anwendung. Verlassen Sie sich nicht darauf, dass der aufrufende Prozess sichere Daten bereitstellt. Fügen Sie z. B. bei der Verwendung des ObjectDataSource-Steuerelements redundante Validierungen und Codierungen in das Objekt ein, das die Datenaktualisierungen durchführt.
Script-Injection
Codieren Sie Benutzereingaben mit der HtmlEncode-Methode. Diese konvertiert HTML in seine Textdarstellung (aus <b> wird beispielsweise <b>) und verhindert die Ausführung des Markup im Browser. Wenn Sie Parameterobjekte für die Übergabe von Benutzereingaben an eine Abfrage verwenden, fügen Sie Handler für die Vorabfrageereignisse des Datenquellensteuerelements hinzu, und führen Sie die Codierung in diesen Ereignissen durch. Behandeln Sie z. B. das Inserting-Ereignis des SqlDataSource-Steuerelements, und codieren Sie in dem Ereignis den Parameterwert vor der Ausführung der Abfrage. Wenn Sie das GridView-Steuerelement mit gebundenen Feldern verwenden, legen Sie die HtmlEncode-Eigenschaft des BoundField-Objekts auf true fest. Dadurch werden Benutzereingaben vom GridView-Steuerelement codiert, wenn die Zeile im Bearbeitungsmodus ist. Für Steuerelemente mit Bearbeitungsmodus sollten Sie Vorlagen verwenden. Die Steuerelemente GridView, DetailsView, FormView, DataList und Login können beispielsweise bearbeitbare Textfelder anzeigen. Mit Ausnahme des GridView-Steuerelements (siehe vorherigen Punkt) werden Benutzereingaben von diesen Steuerelementen jedoch nicht automatisch validiert oder als HTML codiert. Deshalb sollten Sie für diese Steuerelemente Vorlagen erstellen. Fügen Sie dann in die Vorlage ein Eingabesteuerelement ein (z. B. ein TextBox-Steuerelement), und fügen Sie ein Validierungssteuerelement hinzu. Außerdem sollten Sie den Wert des Steuerelements nach dem Extrahieren codieren.
SQL-Injection
Erstellen Sie SQL-Befehle nicht durch Verkettung von Zeichenfolgen. Dies gilt besonders für Zeichenfolgen, die Eingaben von Benutzern enthalten. Verwenden Sie stattdessen parametrisierte Abfragen oder gespeicherte Prozeduren. Beim Erstellen von parametrisierten Abfragen verwenden Sie Parameterobjekte, um die Werte für die Parameter festzulegen. Ausführliche Informationen zu diesem Thema finden Sie unter Verwenden von Parametern mit dem SqlDataSource-Steuerelement und Verwenden von Parametern für Datenquellen-Steuerelemente.