Übersicht über die SicherheitSecurity Overview

Die Gewährleistung der Sicherheit einer Anwendung ist ein fortwährender Prozess.Securing an application is an ongoing process. Es wird niemals die Situation eintreten, dass ein Entwickler dafür garantieren kann, dass eine Anwendung vor allen Angriffen sicher ist, weil unmöglich vorhergesagt werden kann, welche Arten von Angriffen durch neue Technologien hervorgebracht werden.There will never be a point where a developer can guarantee that an application is safe from all attacks, because it is impossible to predict what kinds of future attacks new technologies will bring about. Umgekehrt kann nicht behauptet werden, dass Sicherheitsmängel nicht vorhanden sind oder nicht vorhanden sein können, nur weil diese noch nicht in einem System entdeckt (oder veröffentlicht) wurden.Conversely, just because nobody has yet discovered (or published) security flaws in a system does not mean that none exist or could exist. Sie müssen die Sicherheit bereits in der Entwurfsphase des Projekts planen, und Sie müssen planen, wie die Sicherheit über die gesamte Lebensdauer der Anwendung hinweg gewährleistet werden soll.You need to plan for security during the design phase of the project, as well as plan how security will be maintained over the lifetime of the application.

Entwerfen von sicheren AnwendungenDesign for Security

Eines der größten Probleme bei der Entwicklung sicherer Anwendungen besteht darin, dass Sicherheit oft als etwas betrachtet wird, das erst implementiert werden muss, wenn der Code eines Projekts bereits fertiggestellt ist.One of the biggest problems in developing secure applications is that security is often an afterthought, something to implement after a project is code-complete. Wenn die Sicherheit aber nicht von Anfang an in eine Anwendung eingebaut wird, entstehen unsichere Anwendungen, bei denen dem Aspekt der Anwendungssicherheit nicht genügend Beachtung geschenkt wurde.Not building security into an application at the outset leads to insecure applications because little thought has been given to what makes an application secure.

Wenn Sicherheit erst kurz vor Schluss implementiert wird, führt dies zu noch mehr Fehlern, weil die Software unter den neuen Einschränkungen abbricht oder umgeschrieben werden muss, um bisher nicht vorgesehene Funktionen noch unterzubringen.Last minute security implementation leads to more bugs, as software breaks under the new restrictions or has to be rewritten to accommodate unanticipated functionality. Jede Zeile überarbeiteten Codes birgt die Möglichkeit, dass sich dort ein neuer Bug einschleicht.Every line of revised code contains the possibility of introducing a new bug. Aus diesem Grund sollten Sie Sicherheitsaspekte schon in einem frühen Entwicklungsstadium bedenken, sodass diese gemeinsam mit den neuen Funktionen entwickelt werden.For this reason, you should consider security early in the development process so that it can proceed in tandem with the development of new features.

Erstellen von GefahrenmodellenThreat Modeling

Sie können ein System nur vor Angriffen schützen, wenn Ihnen alle potenziellen Angriffe bekannt sind, denen es ausgesetzt sein kann.You cannot protect a system against attack unless you understand all the potential attacks that it is exposed to. Der Prozess der Auswertung von Sicherheitsbedrohungen, die als Bedrohungsmodellierungbezeichnet werden, ist erforderlich, um die Wahrscheinlichkeit und die Auswirkungen von Sicherheitsverletzungen in Ihrer ADO.NET-Anwendung zu ermitteln.The process of evaluating security threats, called threat modeling, is necessary to determine the likelihood and ramifications of security breaches in your ADO.NET application.

Das Erstellen von Gefahrenmodellen besteht ganz allgemein aus den folgenden drei Schritten: Begreifen der Sichtweise der Gegenseite, Charakterisieren der Sicherheit des Systems und Bestimmen der Gefahren.Threat modeling is composed of three high-level steps: understanding the adversary’s view, characterizing the security of the system, and determining threats.

Das Erstellen von Gefahrenmodellen ist eine iterative Herangehensweise an die Bewertung von Sicherheitsrisiken in Ihrer Anwendung, bei der die gefährlichsten Sicherheitsrisiken herausgefunden werden sollen, also diejenigen, bei denen die Gefahr besteht, dass die Daten mit der höchsten Sicherheitsrelevanz in die falschen Hände gelangen.Threat modeling is an iterative approach to assessing vulnerabilities in your application to find those that are the most dangerous because they expose the most sensitive data. Nachdem Sie die Sicherheitsrisiken identifiziert haben, können Sie sie nach dem jeweiligen Risikograd sortieren und nach Priorität geordnete Gegenmaßnahmen einleiten.Once you identify the vulnerabilities, you rank them in order of severity and create a prioritized set of countermeasures to counter the threats.

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

RessourceResource BeschreibungDescription
Website zur Bedrohungsmodellierung im MSDN Security Developer CenterThe Threat Modeling site on the MSDN Security Developer Center Die Ressourcen auf dieser Seite helfen Ihnen, den Prozess der Erstellung von Gefahrenmodellen besser zu verstehen und Gefahrenmodelle zu entwickeln, die Sie zum Absichern Ihrer eigenen Anwendungen verwenden können.The resources on this page will help you understand the threat modeling process and build threat models that you can use to secure your own applications

Das Prinzip der minimalen RechtegewährungThe Principle of Least Privilege

Beim Entwickeln, Erstellen und Bereitstellen Ihrer Anwendung muss davon ausgegangen werden, dass Ihre Anwendung angegriffen werden wird.When you design, build, and deploy your application, you must assume that your application will be attacked. Häufig gehen solche Angriffe von bösartigem Code aus, der mit den Berechtigungen des Benutzers ausgeführt wird, der die Codeausführung gestartet hat.Often these attacks come from malicious code that executes with the permissions of the user running the code. Ein Angriff kann aber auch über eigentlich nicht bösartigen Code ausgeführt werden, der vom Angreifer per Exploit ausgenutzt wird.Others can originate with well-intentioned code that has been exploited by an attacker. Gehen Sie beim Planen der Sicherheit immer vom schlimmsten Fall aus.When planning security, always assume the worst-case scenario will occur.

Eine Gegenmaßnahme besteht darin zu versuchen, so viele Mauern wie möglich um Ihren Code zu errichten, indem der Code mit minimalen Berechtigungen ausgeführt wird.One counter-measure you can employ is to try to erect as many walls around your code as possible by running with least privilege. Das Prinzip der minimalen Rechtegewährung besagt, dass jede Berechtigung, die gewährt wird, nur für den geringstmöglichen Teil des Codes und nur für die geringstmögliche Zeit erteilt werden sollte, der bzw. die zur Erledigung der Aufgabe unbedingt notwendig ist.The principle of least privilege says that any given privilege should be granted to the least amount of code necessary for the shortest duration of time that is required to get the job done.

Beim Erstellen sicherer Anwendungen hat es sich bewährt, zunächst ganz ohne Berechtigungen zu beginnen und erst dann die geringstmöglichen Berechtigungen für die konkrete auszuführende Aufgabe hinzuzufügen.The best practice for creating secure applications is to start with no permissions at all and then add the narrowest permissions for the particular task being performed. Wenn man damit beginnt, zunächst alle Berechtigungen zu gewähren und dann nur einzelne Berechtigungen wieder entzieht, entstehen unsichere Anwendungen, die schwierig zu testen und zu verwalten sind, weil sich aus dem ungewollten Gewähren zu vieler Rechte Sicherheitslücken ergeben können.By contrast, starting with all permissions and then denying individual ones leads to insecure applications that are difficult to test and maintain because security holes may exist from unintentionally granting more permissions than required.

Weitere Informationen zum Absichern Ihrer Anwendungen finden Sie in den folgenden Ressourcen:For more information on securing your applications, see the following resources.

RessourceResource BeschreibungDescription
Sichern von AnwendungenSecuring Applications Enthält Links zu allgemeinen Sicherheitsthemen.Contains links to general security topics. Außerdem finden Sie hier Links zu Themen, in denen das Absichern von verteilten Anwendungen, Webanwendungen, mobilen Anwendungen und Desktopanwendungen beschrieben wird.Also contains links to topics for securing distributed applications, Web applications, mobile applications, and desktop applications.

Codezugriffssicherheit (Code Access Security, CAS)Code Access Security (CAS)

Die Codezugriffssicherheit (Code Access Security, CAS) ist ein Mechanismus, mit dem der Zugriff von Code auf geschützte Ressourcen und Operationen beschränkt werden kann.Code access security (CAS) is a mechanism that helps limit the access that code has to protected resources and operations. In .NET Framework erfüllt CAS die folgenden Funktionen:In the .NET Framework, CAS performs the following functions:

  • Definieren von Berechtigungen und Berechtigungssätzen, die den Zugriff auf die verschiedenen Systemressourcen regelnDefines permissions and permission sets that represent the right to access various system resources.

  • Bereitstellen von Möglichkeiten für Administratoren, durch Verknüpfen von Berechtigungssätzen mit Codegruppen eine Sicherheitsrichtlinie zu konfigurierenEnables administrators to configure security policy by associating sets of permissions with groups of code (code groups).

  • Bereitstellen von Möglichkeiten für Code, die für die Ausführung erforderlichen sowie die erwünschten Berechtigungen anzufordern, und Festlegen, welche Berechtigungen der Code niemals haben darfEnables code to request the permissions it requires in order to run, as well as the permissions that would be useful to have, and specifies which permissions the code must never have.

  • Erteilen von Berechtigungen für jede geladene Assembly auf der Grundlage der vom Code angeforderten Berechtigungen und der laut Sicherheitsrichtlinie zulässigen OperationenGrants permissions to each assembly that is loaded, based on the permissions requested by the code and on the operations permitted by security policy.

  • Bereitstellen der Möglichkeit für Code festzulegen, dass seine Aufrufer bestimmte Berechtigungen haben müssenEnables code to demand that its callers have specific permissions.

  • Bereitstellen der Möglichkeit für Code festzulegen, dass seine Aufrufer eine digitale Signatur besitzen müssen, sodass der geschützte Code nur von Aufrufern eines bestimmten Unternehmens oder eines bestimmten Standorts aufgerufen werden kannEnables code to demand that its callers possess a digital signature, thus allowing only callers from a particular organization or site to call the protected code.

  • Durchsetzen von Einschränkungen für Code zur Laufzeit, indem die erteilten Berechtigungen der einzelnen Aufrufer in der Aufrufliste mit den Berechtigungen verglichen werden, die sie besitzen müssenEnforces restrictions on code at run time by comparing the granted permissions of every caller on the call stack to the permissions that callers must have.

Um im Falle eines erfolgreichen Angriffs den Schaden so gering wie möglich zu halten, sollten Sie für Ihren Code einen Sicherheitskontext wählen, der nur den Zugriff auf die Ressourcen gewährt, die zum Arbeiten wirklich benötigt werden.To minimize the amount of damage that can occur if an attack succeeds, choose a security context for your code that grants access only to the resources it needs to get its work done and no more.

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

RessourceResource BeschreibungDescription
Codezugriffssicherheit und ADO.NETCode Access Security and ADO.NET Beschreibt die Interaktionen zwischen der Codezugriffssicherheit, der rollenbasierten Sicherheit und teilweise vertrauenswürdigen Umgebungen aus der Sicht einer ADO.NET-Anwendung.Describes the interactions between code access security, role-based security, and partially trusted environments from the perspective of an ADO.NET application.
CodezugriffssicherheitCode Access Security Enthält Links zu weiteren Themen mit Erläuterungen zu CAS in .NET Framework.Contains links to additional topics describing CAS in the .NET Framework.

DatenbanksicherheitDatabase Security

Das Prinzip der minimalen Rechtegewährung gilt auch für Ihre Datenquelle.The principle of least privilege also applies to your data source. Bei der Datenbanksicherheit gilt es folgende allgemeine Richtlinien zu beachten:Some general guidelines for database security include:

  • Gewähren Sie neu erstellten Konten nur die geringstmöglichen Zugriffsrechte.Create accounts with the lowest possible privileges.

  • Erlauben Sie den Benutzern nicht, auf administrative Konten zuzugreifen, um den Code funktionsfähig zu bekommen.Do not allow users access to administrative accounts just to get code working.

  • Geben Sie keine serverseitigen Fehlermeldungen an Clientanwendungen zurück.Do not return server-side error messages to client applications.

  • Validieren Sie sowohl auf dem Client als auch auf dem Server alle Eingaben.Validate all input at both the client and the server.

  • Verwenden Sie parametrisierte Befehle, und vermeiden Sie dynamische SQL-Anweisungen.Use parameterized commands and avoid dynamic SQL statements.

  • Aktivieren Sie die Sicherheitsüberwachung und -protokollierung für die von Ihnen verwendete Datenbank, sodass Sie bei Sicherheitsverletzungen entsprechend benachrichtigt werden.Enable security auditing and logging for the database you are using so that you are alerted to any security breaches.

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

RessourceResource BeschreibungDescription
SQL Server Security (SQL Server-Sicherheit)SQL Server Security Bietet eine Übersicht über die SQL Server-Sicherheit mit Anwendungsszenarien, die wertvolle Hinweise zur Erstellung sicherer ADO.NET-Anwendungen geben, die auf SQL Server zugreifen.Provides an overview of SQL Server security with application scenarios that provide guidance for creating secure ADO.NET applications that target SQL Server.
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.

Sicherheitsrichtlinie und VerwaltungSecurity Policy and Administration

Eine unsachgemäße Verwaltung der CAS-Richtlinie kann potenziell die Sicherheit schwächen.Improperly administering code access security (CAS) policy can potentially create security weaknesses. Nach dem Bereitstellen einer Anwendung sollten Verfahren zum Überwachen der Sicherheit eingesetzt und regelmäßige Risikobewertungen vorgenommen werden.Once an application is deployed, techniques for monitoring security should be used and risks evaluated as new threats emerge.

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

RessourceResource BeschreibungDescription
Verwaltung von SicherheitsrichtlinienSecurity Policy Management Enthält Informationen zum Erstellen und Verwalten einer Sicherheitsrichtlinie.Provides information on creating and administering security policy.
Bewährte Methoden für SicherheitsrichtlinienSecurity Policy Best Practices Enthält Links zu Themen, in denen die Verwaltung einer Sicherheitsrichtlinie beschrieben wird.Provides links describing how to administer security policy.

Siehe auchSee also