Sicherheitsfeatures im CRT

Viele alten CRT-Funktionen haben, sichereren die neueren Versionen.Wenn eine sichere Funktion vorhanden ist, wird die ältere weniger sichere Version als veraltet markiert und die neue Version ( _s das Suffix „Speichern“).

In diesem Kontext „veraltete“ bedeutet lediglich, dass die Verwendung einer Funktion nicht empfohlen wird. Sie gibt nicht an, dass die Funktion geplant wird, der CRT entfernt werden soll.

Die sicheren Funktionen nicht verhindern oder korrigieren Sicherheitsfehler. vielmehr fangen diese Fehler auf, wenn sie auftreten.Führen Sie zusätzliche Prüfungen auf Fehlerzustände aus, und im Falle eines Fehlers, rufen sie einen Fehlerhandler auf (siehe Parametervalidierung).

Beispielsweise verfügt die strcpy-Funktion keine Methode des Mitteilens, wenn die Zeichenfolge, die sie kopiert, für den Zielpuffer zu groß ist.Allerdings nimmt ihr sicheres Entsprechung, strcpy_s, die Größe des Puffers als Parameter, sodass sie ermitteln, ob ein Pufferüberlauf auftritt.Wenn Sie strcpy_s verwenden, um elf Zeichen in einen zehn Zeichen bestehende Puffer kopiert werden sollen, handelt es sich bei dem ein Fehler im Bereich. strcpy_s kann den Fehler nicht beheben, aber er kann den Fehler erkennen und Sie benachrichtigen, indem er ungültige Parameter Ereignishandler aufruft.

Warnungen Veraltungs ausschließen

Es gibt mehrere Möglichkeiten, Veraltungs Leistungswarnungen für die älteren weniger sicheren Funktionen zu vermeiden.Das einfachste ist einfach, _CRT_SECURE_NO_WARNINGS definieren oder das warning-Pragma zu verwenden.Alle Warnungen Veraltungs deaktiviert, aber natürlich vorhanden sind, die noch Sicherheitsprobleme, die die Warnungen verursacht haben.Es ist besser, Veraltungs und Warnungen zu aktivieren und die neuen CRT-Sicherheitsmerkmale zu nutzen.

In C++ die einfachste Möglichkeit, die durch Speichern Sie Vorlagen-Überladungenzu verwenden, besteht darin, die in vielen Fällen Veraltungs Leistungswarnungen beseitigt, indem Sie Aufrufe der veralteten Funktionen durch Aufrufe an den neuen sicheren Versionen dieser Funktionen ersetzen.Betrachten Sie beispielsweise diesen veralteten Aufruf von strcpy:

   char szBuf[10]; 
   strcpy(szBuf, "test"); // warning: deprecated 

Das Definieren von mehr als 1 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES die Warnung, indem Sie den strcpy Aufruf von strcpy_sPufferüberläufen der Änderungen verhindert.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Für die veralteten Funktionen außen speichern Sie Vorlagen Operatoren, müssen Sie den Code manuell aktualisieren, um ggf. bestimmt die sicheren Versionen verwendet werden soll.

Eine andere Quelle von Warnungen, Veraltungs keinen Bezug zur Sicherheit, ist die POSIX-Funktionen.Ersetzen Sie POSIX-Funktionsnamen nach ihren Standardwert entsprechungen (z. B. Zugriff Änderung an _access), oder deaktivieren Sie POSIX-verknüpfte Warnungen Veraltungs, indem Sie _CRT_NONSTDC_NO_WARNINGSdefinieren.Weitere Informationen finden Sie unter Deprecated CRT Functions.

Zusätzliche Sicherheitsfeatures

Einige Sicherheitsfunktionen gehören folgende:

  • Parameter Validation.Parameter zu übergeben werden überprüft, CRT-Funktionen in beiden speichern und in vielen Funktionen bereits vorhandene Versionen von Funktionen.Dazu gehören: Validierung

    • Suchen nach NULL-Werte an Funktionen übergeben.

    • Enumerationswerte für das Überprüfen der Gültigkeit.

    • Das Aktivieren dieses ganzzahlige Werte sind in der gültigen Bereiche.

  • Weitere Informationen finden Sie unter Parametervalidierung.

  • Ein Handler für ungültige Parameter ist auch dem Entwickler zugänglich.Wenn eine Begegnung eines ungültigen Parameters, anstatt die Anwendung zu erläutern und zu beenden, der CRT bietet eine Möglichkeit, zu überprüfen, funktionieren diese Probleme mit _set_invalid_parameter_handler .

  • Sized Buffers.Die sicheren Funktionen erfordern, dass die Puffergröße an eine Funktion übergeben wird, die auf einen Puffer geschrieben wird.Die sicheren Versionen überprüfen, ob der Puffer groß genug ist, bevor sie darauf schreiben und gefährliche Pufferüberlauf zu vermeiden, die bösartigem Code können.Diese Funktionen geben normalerweise einen errno Fehlertyp Code zurück und rufen den ungültigen Parameter für ein, wenn die Größe des Puffers zu klein ist.Funktionen, die in Eingabepuffern, wie getssichere Versionen gelesen wird, haben, die Sie benötigen, um eine maximale Größe anzugeben.

  • Null termination.Einige Funktionen, die möglicherweise nicht-beendete Zeichenfolgen ermöglichen, sichere Versionen verfügen, die sicherstellen, dass die Zeichenfolgen ordnungsgemäß beendet NULL sind.

  • Enhanced error reporting.Die Rückgabe fehlercodes der sicheren Funktionen mit mehr Fehlerinformationen als mit bereits vorhandenen Funktionen verfügbar war.Die sicheren Funktionen und zahlreiche vordefinierte festlegen und geben errno nun Funktionen oftmals ein errno Codetyp auch zurückgegeben, um eine bessere Fehlerberichterstellung bereitzustellen.

  • Filesystem security.Sichere Datei-E/A APIs unterstützen sicheren Dateizugriff im Standardwert erforderlich.

  • Windows security.Sicherer Vorgang API erzwingen und Sicherheitsrichtlinien zulassen, ACLs festgelegt werden.

  • Format string syntax checking.Ungültige Zeichenfolgen werden z. B. mit der falschen Typprintf im Feld Zeichen in Formatzeichenfolgen erkannt.

Siehe auch

Referenz

Speichern Sie Vorlagen-Überladungen

CRT-Bibliotheks-Funktionen

Konzepte

Parametervalidierung