Verwenden von Sicheren Zeichenfolgenfunktionen

Viele Systemsicherheitsprobleme werden durch eine schlechte Pufferbehandlung und die daraus resultierenden Pufferüberläufe verursacht. Eine schlechte Pufferbehandlung ist häufig mit Zeichenfolgenbearbeitungsvorgängen verbunden. Die Standardmäßigen Zeichenfolgenbearbeitungsfunktionen, die von C/C++-Sprachlaufzeitbibliotheken (strcat, strcpy, sprintf usw.) bereitgestellt werden, verhindern nicht das Schreiben über das Ende von Puffern hinaus.

Zwei neue Sätze von Zeichenfolgenbearbeitungsfunktionen, die als sichere Zeichenfolgenfunktionen bezeichnet werden, bieten zusätzliche Verarbeitung für die ordnungsgemäße Pufferbehandlung in Ihrem Code. Diese sicheren Zeichenfolgenfunktionen sind im Windows Driver Kit (WDK) und für Microsoft Windows XP SP1 und höhere Versionen des Driver Development Kit (DDK) und des Windows SDK verfügbar. Sie sollen ihre integrierten C/C++-Entsprechungen und ähnliche Routinen ersetzen, die von Windows bereitgestellt werden.

Ein Satz sicherer Zeichenfolgenfunktionen ist für die Verwendung im Kernelmoduscode vorgesehen. Diese Funktionen werden in einer Headerdatei namens Ntstrsafe.h prototypiert. Diese Headerdatei und eine zugeordnete Bibliothek sind im WDK verfügbar.

Die anderen Sicheren Zeichenfolgenfunktionen sind für die Verwendung in Anwendungen im Benutzermodus vorgesehen. Eine entsprechende Headerdatei, Strsafe.h, enthält Prototypen für diese Funktionen. Diese Datei und eine zugeordnete Bibliothek sind im Windows SDK verfügbar. Weitere Informationen zu Strsafe.h finden Sie unter Verwenden der Strsafe.h-Funktionen.

Der Satz der Sicheren Zeichenfolgenfunktionen im Kernelmodus besteht aus den folgenden zwei Teilmengen:

Die Funktionen für sichere Zeichenfolgen im Kernelmodus bieten die folgenden Features:

  • Jede Sichere Zeichenfolgenfunktion empfängt die Größe des Zielpuffers als Eingabe. Die Funktion kann somit sicherstellen, dass sie nicht über das Ende des Puffers schreibt.

  • Die Unicode- und ANSI-Zeichenfolgenfunktionen beenden alle Ausgabezeichenfolgen mit einem NULL-Zeichen, auch wenn der Vorgang das beabsichtigte Ergebnis abschneidet.

  • Alle sicheren Zeichenfolgenfunktionen geben einen NTSTATUS-Wert mit nur einem möglichen Erfolgscode (STATUS_SUCCESS) zurück.

  • Die meisten sicheren Zeichenfolgenfunktionen sind sowohl in einer Byte- als auch in einer Zeichenzählungsversion verfügbar. Beispielsweise verkettet RtlStringCbCata zwei bytegezählte Zeichenfolgen und RtlStringCchCata zwei zeichengezählte Zeichenfolgen.

  • Die meisten sicheren Zeichenfolgenfunktionen sind in einer erweiterten Version mit ex-Suffix verfügbar, die zusätzliche Funktionen bietet. Beispielsweise erweitert RtlStringCbCatExa die Funktionalität von RtlStringCbCata.

Dieser Abschnitt schließt folgende Themen ein:

Zusammenfassung der Kernel-Mode Sicheren Zeichenfolgenfunktionen

Importieren Kernel-Mode Sicheren Zeichenfolgenfunktionen