Share via


Empfohlene Vorgehensweisen bezüglich der Sicherheit in C++

Dieser Artikel enthält Informationen über Sicherheitstools und Vorgehensweisen.Verwenden von bietet eine Anwendung zwar nicht immun gegen Angriffe, aber sie verringert die Wahrscheinlichkeit erfolgreicher Angriffe.

Visual C++-Sicherheitsfeatures

Diese Sicherheitsfeatures werden in den Visual C++-Compiler und - Linker erstellt:

  • /GS (Puffer-Sicherheitsüberprüfung)
    Weist den Compiler an, Überlauferkennungscode in Funktionen einzufügen, die von ausgesetzt sein können.Wenn ein Überlauf erkannt wird, wird die Programmausführung angehalten.Diese Option ist standardmäßig aktiviert.

  • /SAFESEH (Abbild verfügt über sichere Ausnahmehandler)
    Weist den Linker an, dem Ausgabeabbild eine Tabelle einzuschließen, die die Adresse jedes - Ausnahmehandlers enthält.Zur Laufzeit verwendet das Betriebssystem diese Tabelle, um sicherzustellen, dass nur rechtmäßige Ausnahmehandler ausgeführt werden.Dies hilft, die Ausführung von Ausnahmehandlern zu verhindern, die von einem böswilligen Angriffen zur Laufzeit eingegeben werden.Standardmäßig ist diese Option.

  • /NXCOMPAT, /NXCOMPAT (kompatibel mit Datenausführungsverhinderung)
    Diese Compiler- und Linkeroptionen ermöglichen Kompatibilität der Datenausführungsverhinderung (DEP).DEP schützt die CPU für die Ausführung von NichtCodeseiten.

  • /analyze (Codeanalyse)
    Diese Compileroption aktiviert die Codeanalyse, die über potentielle Sicherheitslücken wie Pufferüberlauf, nicht initialisierten Speicher, Dereferenzierung von NULL-Zeigern und Speicherverlusten Bericht erstattet.Standardmäßig ist diese Option.Weitere Informationen finden Sie unter Übersicht über die Codeanalyse für C/C++.

  • /DYNAMICBASE (Address Space Layout Randomization verwenden)
    Diese Linkeroption ermöglicht die Erstellung eines ausführbaren Images, das an verschiedenen Stellen im Arbeitsspeicher zu Beginn der Ausführung geladen werden kann.Durch diese Option lässt sich die Position des Stapels im Arbeitsspeicher auch schlechter vorhersagen.

CRT mit erweiterter Sicherheit

Die C-Laufzeitbibliothek (CRT) ist erweitert, um sichere Versionen von Funktionen, die Sicherheit Risiko-für Beispiel kommen, die nicht überprüfte strcpy-Funktion zum Kopieren von Zeichenfolgen strcpy einzuschließen.Da die älteren, nicht sicheren Versionen dieser Funktionen veraltet sein, verursachen die Warnungen zur Kompilierzeit.Es regen Sie an, die sicheren Versionen dieser CRT-Funktionen zu verwenden, anstatt, die Compilerwarnungen zu unterdrücken.Weitere Informationen finden Sie unter Sicherheitsfeatures im CRT.

SafeInt-Bibliothek

SafeInt-Bibliothek verhindert Ganzzahlüberläufe und andere als Angriffspunkt geeignete Fehler, die auftreten können, wenn die Anwendung mathematische Vorgänge ausführt.Die Bibliothek SafeInt schließt die SafeInt-Klasse, die SafeIntException-Klasse und mehrere SafeInt-Funktionen ein.

Die SafeInt-Klasse schützt vor Ganzzahlüberlauf und Exploits vom Typ "Division durch 0".Sie können sie verwenden, um Vergleiche zwischen Werten unterschiedlicher Typen zu behandeln.I stellt zwei gezogen werden.Gemäß Standardrichtlinie löst die SafeInt-Klasse eine SafeIntException-Klassenausnahme aus, um zu berichten, warum ein mathematischer Vorgang nicht abgeschlossen werden kann.Gemäß der zweiten Richtlinie beendet die SafeInt-Klasse die Programmausführung.Sie können auch eine benutzerdefinierte Richtlinie definieren.

Jede SafeInt-Funktion schützt einen mathematischen Vorgang vor einem als Angriffspunkt geeigneten Fehler.Sie können zwei verschiedene Arten von Parametern verwenden, ohne sie zu konvertieren zum gleichen Typ.Um mehrere mathematische Vorgänge zu schützen, verwenden Sie die SafeInt-Klasse.

Überprüfte Iteratoren

Ein überprüfter Iterator Containergrenzen erzwingt.Wenn ein überprüfter Iterator außerhalb der zulässigen Grenzen liegt, wird eine Ausnahme generiert und die Programmausführung beendet.Ein überprüfter Iterator stellt andere Antwortebenen bereit, die von Werten abhängig sind, die Präprozessordefinitionen definiert als _SECURE_SCL_THROWS und _ITERATOR_DEBUG_LEVEL zugewiesen werden.Beispielsweise bei _ITERATOR_DEBUG_LEVEL=2, stellt ein überprüfter Iterator umfassende Korrektheitsüberprüfungen im Debugmodus bereit, die bereitgestellt werden, indem Assertionen verwendet.Weitere Informationen finden Sie unter Checked Iterators.

Codeanalyse für verwalteten Code

Codeanalyse für verwalteten Code, auch als FxCop, überprüft Assemblys auf Übereinstimmung mit den the.NET-Framework-Entwurfsrichtlinien.FxCop analysiert den Code und die Metadaten in jeder Assembly, um für in den folgenden Bereichen auf Fehler überprüfen:

  • Bibliotheksentwurf

  • Lokalisierung

  • Namenskonventionen

  • Leistung

  • Sicherheit

Windows Application Verifier

Der Application Verifier (AppVerifier) kann helfen, mögliche Anwendungskompatibilität, Stabilität und Sicherheitsprobleme zu identifizieren.

Der AppVerifier überwacht, wie eine Anwendung das Betriebssystem verwendet.Es beobachtet Dateisystem, Registrierung, Arbeitsspeicher und APIs, während die Anwendung ausgeführt wird, und empfiehlt Quellcodefix für Probleme, die sie erkannt werden.

Sie können das AppVerifier verwenden:

  • Test für beliebige Anwendungskompatibilitätsfehler, die durch allgemeine Programmierfehler verursacht werden.

  • Eine Anwendung auf speicherbezogene Probleme untersuchen.

  • Potenzielle Sicherheitsprobleme in einer Anwendung aufdecken.

Das AppVerifier ist Teil des Anwendungskompatibilitäts-Toolkits, das von der TechNet-Website verfügbar Anwendungskompatibilität ist.

.NET Framework-Sicherheitsfeatures

Configuring Security Policy beschreibt Richtlinien und Tools zum Anpassen der .NET Framework-Sicherheitsrichtlinien.

Windows-Benutzerkonten

Das Verwenden von Windows-Benutzerkonten, die zur Gruppe der Administratoren gehören, setzt Entwickler und – durch entsprechende Erweiterung – auch Kunden Sicherheitsrisiken aus.Weitere Informationen finden Sie unter Ausführen als Mitglied der Gruppe Benutzer und Wie Benutzerkontensteuerung (UAC) die Anwendung beeinflusst.

Siehe auch

Referenz

System.Security

Konzepte

Wie Benutzerkontensteuerung (UAC) die Anwendung beeinflusst

Weitere Ressourcen

Sicherheit in .NET Framework