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 scanf
non 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 |