Contrairement à d'autres langages, C et C + + ne vérifie pas la taille de l'entrée avant de l'écrire dans une mémoire tampon . Si l'entrée est plus grande que l'espace alloué dans la mémoire tampon , dont l'entrée est écrite par rapport aux autres dans la pile de données de programme. En plus de causer votre programme de se comporter de manière erratique, débordements de buffer peuvent permettre à un attaquant de planter votre programme , d'avoir accès à des données privées ou même prendre le contrôle d'une machine. Éviter dangereux fonctions C + + est l'une des étapes pour prévenir les dépassements de tampon dans votre programme. Fonctions de chaîne
fonctions dangereuses qui gèrent les chaînes comprennent strcpy (), strcat (), sprintf (), vsprintf (), et obtient (). Ces fonctions effectuent des opérations sur les variables chaîne , stockées sous forme de tableaux de caractères en C + + . Les fonctions lues à partir d'une chaîne d'une source - telles que l'entrée d'utilisateur - copier ou concaténer une chaîne pour former une nouvelle chaîne. Si vous ne cochez pas la taille de la nouvelle chaîne avant de l'écrire dans la mémoire , il peut provoquer un buffer overflow.
Fonctions de numérisation
dangereux fonctions de numérisation de fichiers comprennent scanf (), fscanf (), sscanf (), vscanf () vsscanf () et vfscanf (). Fonctions de numérisation lire les données à partir de l'entrée d'utilisateur , un fichier ou d'autres sources et l'écrire dans une chaîne formatée . Si les données numérisées est plus grand que l'espace alloué pour la chaîne de formatage , un buffer overflow se produit.
Microsoft Fonctions
fonctions dangereuses dans les bibliothèques Microsoft comprendre wcscpy ( ) , _tcscpy ( ) , _mbscpy ( ) , wcscat ( ) , _tcscat ( ) , _mbscat ( ) et CopyMemory ( ) . Ces fonctions sont principalement copier et de concaténer des fonctions qui utilisent des objets spécifiques à Microsoft , plutôt que des chaînes ou des données de fichiers.
Autres fonctions
Autres C + + fonctions dangereuses comprennent realpath () , getopt (), getpass (), streadd (), strecpy () et strtrns ().