Empfohlene Vorgehensweisen bezüglich der Sicherheit in C++
Aktualisiert: November 2007
Dieses Thema enthält Informationen über empfohlene Sicherheitstools und Vorgehensweisen. Die Verwendung dieser Ressourcen und Tools macht eine Anwendung zwar nicht immun gegen Angriffe, aber sie verringert die Wahrscheinlichkeit erfolgreicher Angriffe.
Visual C++-Sicherheitsfeatures
In diesem Abschnitt werden Sicherheitsfeatures erläutert, die in den Visual C++-Compiler und den Visual C++-Linker integriert sind.
/GS (Puffer-Sicherheitsüberprüfung)
Diese Compileroption weist den Compiler an, Überlauferkennungscode in Funktionen einzufügen, die Angriffen 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)
Diese Linkeroption weist den Linker an, dem Ausgabeabbild eine Tabelle mit den Adressen aller Ausnahmehandler hinzuzufügen. Zur Laufzeit verwendet das Betriebssystem diese Tabelle, um sicherzustellen, dass nur rechtmäßige Ausnahmehandler ausgeführt werden. Dies hilft zu verhindern, dass in böswilligen Angriffen zur Laufzeit eingeschleuste Ausnahmehandler ausgeführt werden. Diese Option ist standardmäßig deaktiviert./analyze (Codeanalyse in der Enterprise-Version)
Diese Compileroption aktiviert die Codeanalyse, die über potentielle Sicherheitslücken wie Pufferüberlauf, nicht initialisierten Speicher, Dereferenzierung von NULL-Zeigern und Speicherverlusten Bericht erstattet. Diese Option ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Übersicht über die Codeanalyse für C/C++.
CRT mit erweiterter Sicherheit
Für Visual C++ 2005 wurde die CRT (C Runtime Library, C-Laufzeitbibliothek) um sichere Versionen von Funktionen erweitert, die ein Sicherheitsrisiko darstellen. (Z. B. die nicht überprüfte strcpy-Funktion zum Kopieren von Zeichenfolgen) Die älteren, nicht sicheren Versionen dieser Funktionen sind jetzt veraltet, sodass ihre Verwendung zu Compilerwarnungen führt. Programmierern wird dringend empfohlen, die sicheren Versionen dieser CRT-Funktionen zu verwenden statt nur die Compilerwarnungen zu unterdrücken. Weitere Informationen finden Sie unter Security Enhancements in the CRT.
Überprüfte Iteratoren
Durch überprüfte Iteratoren erhalten Benutzer der Standard-C++-Bibliothekscontainerklassen Benachrichtigungen über Zugriffsversuche auf Elemente außerhalb der Containergrenzen. Weitere Informationen finden Sie unter Checked Iterators.
Codeanalyse für verwalteten Code
Codeanalyse für verwalteten Code, auch bekannt als FxCop, ist ein Tool, das Assemblys auf Übereinstimmung mit den Microsoft .NET Framework-Entwurfsrichtlinien überprüft. FxCop analysiert den Code und die Metadaten innerhalb jeder Assembly und prüft in den folgenden Bereichen auf Fehler:
Bibliotheksentwurf
Lokalisierung
Namenskonventionen
Leistung
Sicherheit
Codeanalyse für verwalteten Code ist in Visual Studio Team System enthalten und kann auch unter https://www.gotdotnet.com/team/fxcop/ heruntergeladen werden.
Windows Application Verifier
Verfügbar als Bestandteil des Anwendungskompatibilitäts-Toolkits ist Application Verifier (AppVerifier), ein Tool, das dem Entwickler hilft, potentielle Kompatibilitäts-, Stabilitäts- und Sicherheitsprobleme in der Anwendung aufzudecken.
AppVerifier überwacht während der Ausführung des Programms die Nutzung des Betriebssystems durch die Anwendung einschließlich des Dateisystems, der Registrierung, des Speichers und der APIs. Das Tool stellt eine Anweisung zur Beseitigung der aufgedeckten Probleme auf Quellcodeebene bereit.
Das Prüfmodul lässt Sie Folgendes ausführen:
Auf potenzielle durch allgemeine Programmierfehler verursachte Anwendungskompatibilitätsfehler prüfen.
Eine Anwendung auf speicherbezogene Probleme untersuchen.
Die Übereinstimmung einer Anwendung mit den verschiedenen Anforderungen des Designed for Windows XP-Logoprogramms oder des Certified for Windows Server™ 2003-Logoprogramms bestimmen.
Potenzielle Sicherheitsprobleme in einer Anwendung aufdecken.
Der Windows-Application Verifier ist unter https://www.microsoft.com/windows/appcompatibility/appverifier.mspx. verfügbar
.NET Framework-Sicherheitsfeatures
Dieser Abschnitt gibt eine Übersicht über zwei verwandte .NET Framework-Sicherheitsfeatures.
Codezugriffssicherheit
Beschreibt das .NET Framework-Sicherheitssystem und wie es mit dem Anwendungscode zusammenarbeitet.Konfigurieren der Sicherheitsrichtlinien
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.
Erhöhen der Sicherheit durch das Verwenden von Benutzerkontensteuerung unter Windows Vista
Benutzerkontensteuerung (UAC) ist ein Feature von Windows Vista, in dem Benutzerkonten eingeschränkte Berechtigungen haben. Weitere Informationen finden Sie unter Wie Benutzerkontensteuerung (UAC) die Anwendung beeinflusst.
Siehe auch
Konzepte
Wie Benutzerkontensteuerung (UAC) die Anwendung beeinflusst