Condividi tramite


Avviso C28726

Utilizzo API vietato: '*function-name' è insicuro ed è stato contrassegnato come deprecato.

Questo avviso indica che viene usata una funzione che è stata vietata e ha una sostituzione più affidabile o sicura. Questo errore specifico indica che la funzione vietata può eseguire il overflow di un buffer.

Commenti

Un elenco di tutte le funzioni vietate descritte in questo errore, perché sono vietate e le sostituzioni consigliate sono disponibili dopo l'esempio seguente.

Nome analisi del codice: BANNED_API_USAGEL2

Esempio

Il codice seguente genera questo avviso:

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

Questo è dovuto all'uso della funzione scanfnon sicura . scanf inserisce qualsiasi limite sulle dimensioni dei dati copiati nel buffer. Per risolvere questo problema, è possibile usare scanf_s, la sostituzione più sicura per questa funzione. scanf_s richiede allo sviluppatore di specificare il numero di byte da copiare. scanf_s garantisce che vengano copiati solo molti byte. Ad esempio, il codice seguente è più sicuro:

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

Funzioni vietate

NOTA: questo elenco viene aggiornato e migliorato attivamente

API vietata Sostituzioni Razionale/Note
_itoa _itoa_s Non termina NULL
_i64toa _i64toa_s Non termina NULL
_i64tow _i64tow_s Non 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 Rilevamento errori limitato
sscanf sscanf_s Rilevamento errori limitato
wmemcpy wmemcpy_s Rilevamento errori limitato
wnsprintfW
wscanf wscanf_s