Partager via


Utilisation de fonctions de chaîne sécurisée

De nombreux problèmes de sécurité système sont dus à une gestion médiocre de la mémoire tampon et aux dépassements de mémoire tampon qui en résultent. Une mauvaise gestion de la mémoire tampon est souvent associée aux opérations de manipulation de chaîne. Les fonctions de manipulation de chaîne standard fournies par les bibliothèques du runtime de langage C/C++ (strcat, strcpy, sprintf, etc.) n’empêchent pas l’écriture au-delà de la fin des mémoires tampons.

Deux nouveaux ensembles de fonctions de manipulation de chaîne, appelées fonctions de chaîne sécurisée, fournissent un traitement supplémentaire pour une gestion appropriée de la mémoire tampon dans votre code. Ces fonctions de chaîne sécurisée sont disponibles dans le Kit de pilotes Windows (WDK) et pour Microsoft Windows XP SP1 et les versions ultérieures du Kit de développement de pilotes (DDK) et du SDK Windows. Ils sont destinés à remplacer leurs équivalents C/C++ intégrés et les routines similaires fournies par Windows.

Un ensemble de fonctions de chaîne sécurisées sont destinées à être utilisées dans le code en mode noyau. Ces fonctions sont prototypes dans un fichier d’en-tête nommé Ntstrsafe.h. Ce fichier d’en-tête et une bibliothèque associée sont disponibles dans wdk.

L’autre ensemble de fonctions de chaîne sécurisée est destiné à être utilisé dans les applications en mode utilisateur. Un fichier d’en-tête correspondant, Strsafe.h, contient des prototypes pour ces fonctions. Ce fichier et une bibliothèque associée sont disponibles dans le Kit de développement logiciel (SDK) Windows. Pour plus d’informations sur Strsafe.h, consultez Utilisation des fonctions Strsafe.h.

L’ensemble des fonctions de chaîne sans échec en mode noyau se compose des deux sous-ensembles suivants :

Les fonctions de chaîne sans échec en mode noyau fournissent les fonctionnalités suivantes :

  • Chaque fonction de chaîne sécurisée reçoit la taille de la mémoire tampon de destination comme entrée. La fonction peut ainsi s’assurer qu’elle n’écrit pas au-delà de la fin de la mémoire tampon.

  • Les fonctions de chaîne Unicode et ANSI terminent toutes les chaînes de sortie avec un caractère NULL, même si l’opération tronque le résultat prévu.

  • Toutes les fonctions de chaîne sécurisée retournent une valeur NTSTATUS, avec un seul code de réussite possible (STATUS_SUCCESS).

  • La plupart des fonctions de chaîne sécurisée sont disponibles à la fois dans une version comptée en octets et en caractères. Par exemple, RtlStringCbCata concatène deux chaînes comptées en octets et RtlStringCchCata concatène deux chaînes comptées en caractères.

  • La plupart des fonctions de chaîne sécurisée sont disponibles dans une version étendue avec suffixe ex qui fournit des fonctionnalités supplémentaires. Par exemple, RtlStringCbCatExa étend les fonctionnalités de RtlStringCbCata.

Cette section comprend les rubriques suivantes :

Résumé de Kernel-Mode fonctions de chaîne sécurisée

Importation Kernel-Mode fonctions de chaîne sécurisée