Ao contrário de outras linguagens , C e C + + não verificar o tamanho da entrada antes de escrevê-lo em um buffer . Se a entrada é maior que o espaço alocado no tampão , a entrada é escrita sobre outros dados na pilha do programa . Além de causar o seu programa para se comportar de forma irregular , estouros de buffer pode permitir que um invasor travar o seu programa , ter acesso a dados privados ou até mesmo assumir o controle de uma máquina. Evitar funções inseguras C + + é um dos passos para a prevenção de estouros de buffer em seu programa. Funções String
funções inseguras que lidam com cordas incluem strcpy () , strcat () , sprintf ( ) , vsprintf () e gets () . Estas funções executam operações em variáveis de cadeia , armazenadas como matrizes de caracteres em C + + . As funções de ler uma string de uma fonte - como a entrada do usuário - cópia , ou concatenar uma string para formar uma nova cadeia. Se você não verificar o tamanho da nova cadeia antes de escrevê-lo na memória, ele pode causar um estouro de buffer.
Digitalização Funções
funções de digitalização de arquivos inseguros incluem scanf ( ) , fscanf ( ) , sscanf ( ) , vscanf ( ) vsscanf ( ) e vfscanf ( ) . As funções de digitalização ler dados de entrada do usuário, um arquivo ou de outras fontes e gravá-lo em uma string formatada . Se os dados digitalizados é maior que o espaço alocado para a seqüência formatador , um buffer overflow irá ocorrer.
Funções Microsoft
funções inseguras em bibliotecas Microsoft incluem wcscpy ( ) , _tcscpy ( ) , _mbscpy ( ) , wcscat ( ) , _tcscat ( ) , _mbscat ( ) e CopyMemory ( ) . Estas funções são principalmente copiar e concatenar as funções que usam objetos específicos da Microsoft , em vez de cordas ou dados de arquivo.
Outras funções
Outras funções inseguras C + + incluem realpath () , getopt () , getpass () , streadd () , strecpy () e strtrns ().