Freigeben über


Sicherheitsübersicht

Das Sichern einer Anwendung ist ein fortlaufender Prozess. Es wird nie einen Punkt geben, an dem ein Entwickler garantieren kann, dass eine Anwendung vor allen Angriffen sicher ist, da es unmöglich ist, vorherzusagen, welche Arten zukünftiger Angriffe neue Technologien bewirken werden. Im Gegensatz dazu bedeutet es nicht, dass nur weil niemand Sicherheitsfehler in einem System entdeckt oder veröffentlicht hat, keine existieren oder existieren könnten. Sie müssen die Sicherheit während der Entwurfsphase des Projekts planen und planen, wie die Sicherheit während der Lebensdauer der Anwendung beibehalten wird.

Design für Sicherheit

Eines der größten Probleme bei der Entwicklung sicherer Anwendungen besteht darin, dass Sicherheit häufig nur nachträglich betrachtet wird, etwas, das implementiert werden muss, nachdem ein Projekt codefertig ist. Das Einbauen von Sicherheitsmaßnahmen in eine Anwendung von Anfang an ist entscheidend, da das Versäumnis dessen dazu führt, dass Anwendungen unsicher sind, weil wenig darüber nachgedacht wurde, was eine Anwendung sicher macht.

Last-Minute-Sicherheitsimplementierung führt zu mehr Fehlern, da Software unter den neuen Einschränkungen bricht oder neu geschrieben werden muss, um unerwartete Funktionen zu berücksichtigen. Jede Zeile überarbeiteter Code enthält die Möglichkeit, einen neuen Fehler einzuführen. Aus diesem Grund sollten Sie die Sicherheit frühzeitig im Entwicklungsprozess berücksichtigen, damit sie zusammen mit der Entwicklung neuer Features fortgesetzt werden kann.

Bedrohungsmodellierung

Sie können ein System nicht vor Angriffen schützen, es sei denn, Sie verstehen alle potenziellen Angriffe, denen es ausgesetzt ist. Der Prozess der Bewertung von Sicherheitsbedrohungen, der sogenannten Bedrohungsmodellierung, ist erforderlich, um die Wahrscheinlichkeit und Auswirkungen von Sicherheitsverletzungen in Ihrer ADO.NET-Anwendung zu ermitteln.

Die Bedrohungsmodellierung besteht aus drei allgemeinen Schritten: Grundlegendes zur Ansicht des Gegners, zur Charakterisierung der Sicherheit des Systems und zur Ermittlung von Bedrohungen.

Die Bedrohungsmodellierung ist ein iterativer Ansatz zur Bewertung von Sicherheitsrisiken in Ihrer Anwendung, um diejenigen zu finden, die am gefährlichsten sind, da sie die vertraulichsten Daten verfügbar machen. Nachdem Sie die Sicherheitsanfälligkeiten identifiziert haben, bewerten Sie sie nach Schweregrad und erstellen einen priorisierten Satz von Gegenmaßnahmen zur Bekämpfung der Bedrohungen.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Ressource BESCHREIBUNG
Die Website "Bedrohungsmodellierung " im Security Engineering Portal Die Ressourcen auf dieser Seite helfen Ihnen, den Prozess der Bedrohungsmodellierung zu verstehen und Bedrohungsmodelle zu erstellen, die Sie zum Sichern Ihrer eigenen Anwendungen verwenden können.

Das Prinzip der geringsten Rechte

Wenn Sie Ihre Anwendung entwerfen, erstellen und bereitstellen, müssen Sie davon ausgehen, dass Ihre Anwendung angegriffen wird. Häufig stammen diese Angriffe aus bösartigem Code, der mit den Berechtigungen des Benutzers ausgeführt wird, der den Code ausführt. Andere können aus gut gemeintem Code entstehen, der von einem Angreifer ausgenutzt wurde. Gehen Sie bei der Planung der Sicherheit immer davon aus, dass das Szenario im schlimmsten Fall eintritt.

Eine Gegenmaßnahme, die Sie ergreifen können, besteht darin, Ihrem Code so viele Barrieren wie möglich hinzuzufügen, indem Sie ihn mit den geringsten erforderlichen Berechtigungen ausführen. Das Prinzip der geringsten Berechtigung besagt, dass jeder gegebene Berechtigungsbetrag der geringsten Menge an Code gewährt werden sollte, der für die kürzeste Zeit erforderlich ist, die erforderlich ist, um den Auftrag zu erledigen.

Die bewährte Methode zum Erstellen sicherer Anwendungen besteht darin, ohne Berechtigungen zu beginnen und dann die schmalsten Berechtigungen für die jeweilige Aufgabe hinzuzufügen, die ausgeführt wird. Im Gegensatz dazu führt das Starten mit allen Berechtigungen und dann das Verweigern einzelner Anwendungen zu unsicheren Anwendungen, die schwierig zu testen und zu verwalten sind, da Sicherheitslöcher möglicherweise aus unbeabsichtigter Gewährung von mehr Berechtigungen als erforderlich bestehen können.

Weitere Informationen zum Sichern Ihrer Anwendungen finden Sie in den folgenden Ressourcen:

Ressource BESCHREIBUNG
Sichern von Anwendungen Enthält Links zu allgemeinen Sicherheitsthemen. Enthält außerdem Links zu Themen zum Sichern verteilter Anwendungen, Webanwendungen, mobiler Anwendungen und Desktopanwendungen.

Codezugriffssicherheit (Code Access Security, CAS)

Codezugriffssicherheit (Code Access Security, CAS) ist ein Mechanismus, mit dem der Zugriff, den Code auf geschützte Ressourcen und Vorgänge hat, beschränkt werden kann. In .NET Framework führt CAS die folgenden Funktionen aus:

  • Definiert Berechtigungen und Berechtigungssätze, die das Recht auf den Zugriff auf verschiedene Systemressourcen darstellen.

  • Ermöglicht Administratoren das Konfigurieren von Sicherheitsrichtlinien durch Zuordnen von Berechtigungsgruppen zu Codegruppen (Codegruppen).

  • Ermöglicht dem Code das Anfordern der erforderlichen Berechtigungen, um ihn auszuführen, sowie der Berechtigungen, die nützlich wären, und gibt an, welche Berechtigungen der Code niemals besitzen darf.

  • Gewährt Berechtigungen für jede Assembly, die geladen wird, basierend auf den vom Code angeforderten Berechtigungen und den durch die Sicherheitsrichtlinie erlaubten Vorgängen.

  • Ermöglicht Code die Anforderung, dass die Aufrufer über bestimmte Berechtigungen verfügen.

  • Ermöglicht code die Anforderung, dass seine Aufrufer über eine digitale Signatur verfügen, sodass nur Anrufer von einer bestimmten Organisation oder Website den geschützten Code aufrufen können.

  • Erzwingt Einschränkungen für Code zur Laufzeit, indem die gewährten Berechtigungen jedes Aufrufers im Aufrufstapel mit den Berechtigungen verglichen werden, die Aufrufer besitzen müssen.

Um den Schaden zu minimieren, der auftreten kann, wenn ein Angriff erfolgreich ist, wählen Sie einen Sicherheitskontext für Ihren Code aus, der nur Zugriff auf die Ressourcen gewährt, die er benötigt, um seine Arbeit zu erledigen und nicht mehr.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Ressource BESCHREIBUNG
Codezugriffssicherheit und ADO.NET Beschreibt die Interaktionen zwischen Codezugriffssicherheit, rollenbasierter Sicherheit und teilweise vertrauenswürdigen Umgebungen aus der Perspektive einer ADO.NET Anwendung.
Codezugriffssicherheit Enthält Links zu zusätzlichen Themen, die CAS in .NET Framework beschreiben.

Datenbanksicherheit

Das Prinzip der geringsten Rechte gilt auch für Ihre Datenquelle. Zu den allgemeinen Richtlinien für die Datenbanksicherheit gehören:

  • Erstellen Sie Konten mit den niedrigsten Berechtigungen.

  • Erlauben Sie Benutzern nicht den Zugriff auf Verwaltungskonten, nur um Code auszuführen.

  • Geben Sie keine serverseitigen Fehlermeldungen an Clientanwendungen zurück.

  • Überprüfen Sie alle Eingaben sowohl auf dem Client als auch auf dem Server.

  • Verwenden Sie parametrisierte Befehle, und vermeiden Sie dynamische SQL-Anweisungen.

  • Aktivieren Sie die Sicherheitsüberwachung und Protokollierung für die datenbank, die Sie verwenden, damit Sie bei Sicherheitsverletzungen benachrichtigt werden.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Ressource BESCHREIBUNG
SQL Server Security Bietet eine Übersicht über die SQL Server-Sicherheit mit Anwendungsszenarien, die Anleitungen zum Erstellen sicherer ADO.NET Anwendungen für SQL Server bieten.
Empfehlungen für Datenzugriffsstrategien Enthält Empfehlungen für den Zugriff auf Daten und das Ausführen von Datenbankvorgängen.

Sicherheitsrichtlinie und -verwaltung

Eine unsachgemäße Verwaltung der Richtlinie zur Codezugriffssicherheit (Code Access Security, CAS) kann potenziell Sicherheitsschwächen erzeugen. Sobald eine Anwendung bereitgestellt wurde, sollten Techniken zur Überwachung der Sicherheit eingesetzt und Risiken bewertet werden, wenn neue Bedrohungen auftreten.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Ressource BESCHREIBUNG
Sicherheitsrichtlinienverwaltung Enthält Informationen zum Erstellen und Verwalten von Sicherheitsrichtlinien.
Empfehlungen für Sicherheitsrichtlinien Enthält Links, die beschreiben, wie Sicherheitsrichtlinien verwaltet werden.

Siehe auch