A diferencia de otros lenguajes , C y C + + no comprobar el tamaño de la entrada antes de escribir en un búfer. Si la entrada es mayor que el espacio asignado en la memoria intermedia , la entrada se escribe más de otros datos en la pila del programa . Además de la causa de su programa se comporte de forma errática , desbordamientos de búfer puede permitir que un atacante se bloquee su programa , acceder a datos privados o incluso tomar el control de una máquina. Evitar funciones no seguras de C + + es uno de los pasos para la prevención de desbordamientos de búfer en el programa. Funciones de cadena
funciones inseguras que manejan cadenas incluyen strcpy (), strcat (), sprintf (), vsprintf (), y obtiene (). Estas funciones realizan operaciones sobre las variables de cadena , almacenados como arrays de caracteres en C + + . Las funciones de lectura una cadena de una fuente - tales como la entrada del usuario - copia , o concatenar una cadena para formar una nueva cadena . Si usted no selecciona el tamaño de la nueva cadena antes de escribir en la memoria , puede causar un desbordamiento de búfer .
Funciones de escaneo
funciones de escaneo de archivos no seguros incluyen scanf (), fscanf (), sscanf (), vscanf () vsscanf () y vfscanf (). Funciones de escaneo leen los datos de entrada del usuario, un archivo o de otras fuentes y escribir en una cadena con formato. Si los datos escaneados es mayor que el espacio asignado para la cadena de formateador , se producirá un desbordamiento de búfer .
BPOS Standard Microsoft Funciones
funciones inseguras en las bibliotecas de Microsoft incluyen wcscpy ( ) , _tcscpy ( ) , _mbscpy ( ) , wcscat ( ) , _tcscat ( ) , _mbscat ( ) y plantean CopyMemory ( ) . Estas funciones se copian y concatenar principalmente funciones que utilizan objetos de Microsoft específicas , en lugar de cadenas o datos de archivo.
Otras funciones
Otras funciones inseguras C + + incluye realpath () , getopt (), getpass (), streadd (), strecpy () y strtrns ().