警告 C28726

禁止されている API の使用: '*function-name' は安全ではなく、非推奨とマークされています。

この警告は、禁止になっている関数が使用されており、より堅牢または安全な代替関数があることを示します。 この特定のエラーは、禁止されている関数がバッファーをオーバーフローする可能性があることを示します。

解説

このエラーの対象となるすべての禁止されている関数の一覧、禁止されている理由、および推奨される代替は、次の例の後にあります。

コード分析名: BANNED_API_USAGEL2

この警告が発生するコード例を次に示します。

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

これは安全でない関数 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 置換 根拠/注意事項
_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