警告 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 |