Compartilhar via


Aviso C28726

Uso de API proibido: '*function-name' é inseguro e foi marcado como preterido.

Esse aviso indica que uma função está sendo usada que foi banida e tem uma substituição mais robusta ou segura. Esse erro específico indica que a função proibida tem potencial para estourar um buffer.

Comentários

Uma lista de todas as funções proibidas cobertas por esse erro, por que elas são proibidas e as substituições recomendadas podem ser encontradas após o exemplo a seguir.

Nome da análise de código: BANNED_API_USAGEL2

Exemplo

O seguinte código gera esse aviso:

void example_func() 
{ 
    char user_input[10]; 
    scanf(“%s”, input); // scanf is banned for security purposes 
} 

Isso ocorre devido ao uso da função scanfnão segura . scanf coloca qualquer limite no tamanho dos dados copiados para o buffer. Para corrigir esse problema, podemos usar scanf_s, a substituição mais segura para essa função. scanf_s requer que o desenvolvedor especifique quantos bytes devem ser copiados. scanf_s garantirá apenas que muitos bytes sejam copiados. Por exemplo, o código a seguir é mais seguro:

void example_func() 
{ 
    char user_input[10]; 
    scanf_s(“%9s”, input, sizeof(input)); // 9 bytes leaves room for the \0 byte at the end  
} 

Funções proibidas

OBSERVAÇÃO: esta lista está sendo atualizada e aprimorada ativamente

API proibida Substituição(s) Lógica/Anotações
_itoa _itoa_s Não termina NULL
_i64toa _i64toa_s Não termina NULL
_i64tow _i64tow_s Não termina NULL
_mbccpy _mbccpy_s
_mbscpy _mbscpy_s
_mbsnbcpy _mbsnbcpy_s
_mbsnbcat _mbsnbcat_s
_mbsncat _mbsncat_s
_mbsncpy _mbsncpy_s
_mbstok _mbstok_s
_snscanf _snscanf_s
_snwscanf _snwscanf_s
_ui64toa ui64toa_s
_ui64tow _ui64tow_s
_ultoa _ultoa_s
CharToOemA
CharToOemBuffA
CharToOemBuffW
CharToOemW
OemToCharA
OemToCharBuffA
OemToCharBuffW
scanf scanf_s Detecção de erro limitada
sscanf sscanf_s Detecção de erro limitada
wmemcpy wmemcpy_s Detecção de erro limitada
wnsprintfW
wscanf wscanf_s