Share via


警告 C28726

禁用 API 使用方式:『*function-name』 不安全,且已標示為已被取代。

這個警告表示正在使用已禁用且更強固或更安全的取代函式。 這個特定錯誤表示禁用函式可能會溢位緩衝區。

備註

此錯誤涵蓋的所有禁用函式清單、為何禁用,以及下列範例之後可以找到建議的取代專案。

程式代碼分析名稱:BANNED_API_USAGEL2

範例

下列程式代碼會產生此警告:

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

這是因為使用 unsafe 函 scanf式 。 scanf 會限制複製到緩衝區的數據大小。 若要修正此問題,我們可以使用 scanf_s,更安全地取代此函式。 scanf_s 需要開發人員指定要複製的位元組數目。 scanf_s 只會確保會複製許多位元組。 例如,下列程式代碼更安全:

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

禁用函式

注意:此清單正在積極更新和改善

禁用 API 取代 (s) 合理性 / 附注
_itoa _itoa_s 不會以 NULL 終止
_i64toa _i64toa_s 不會以 NULL 終止
_i64tow _i64tow_s 不會以 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 有限的錯誤偵測
sscanf sscanf_s 有限的錯誤偵測
wmemcpy wmemcpy_s 有限的錯誤偵測
wnsprintfW
wscanf wscanf_s