Bagikan melalui


Peringatan C28726

Penggunaan API yang Dilarang: '*function-name' tidak aman dan telah ditandai sebagai tidak digunakan lagi.

Peringatan ini menunjukkan bahwa fungsi sedang digunakan yang telah dilarang dan memiliki penggantian yang lebih kuat atau aman. Kesalahan spesifik ini menunjukkan bahwa fungsi yang dilarang berpotensi meluapkan buffer.

Keterangan

Daftar semua fungsi terlarang yang dicakup oleh kesalahan ini, mengapa fungsi tersebut dilarang, dan penggantian yang direkomendasikan dapat ditemukan setelah contoh berikut.

Nama analisis kode: BANNED_API_USAGEL2

Contoh

Kode berikut menghasilkan peringatan ini:

void example_func() 
{ 
    char user_input[10]; 
    scanf(ā€œ%sā€, input); // scanf is banned for security purposes 
} 

Hal ini disebabkan oleh penggunaan fungsi scanfyang tidak aman. scanf memang menempatkan batasan apa pun pada ukuran data yang disalin ke buffer. Untuk memperbaiki masalah ini, kita dapat menggunakan scanf_s, penggantian yang lebih aman untuk fungsi ini. scanf_s mengharuskan pengembang untuk menentukan berapa banyak byte yang dimaksudkan untuk disalin. scanf_s hanya akan memastikan bahwa banyak byte yang disalin. Misalnya, kode berikut lebih aman:

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

Fungsi Terlarang

CATATAN: Daftar ini sedang diperbarui dan ditingkatkan secara aktif

API Terlarang Penggantian Alasan / Catatan
_itoa _itoa_s Tidak mengakhiri NULL
_i64toa _i64toa_s Tidak mengakhiri NULL
_i64tow _i64tow_s Tidak mengakhiri 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 Deteksi kesalahan terbatas
sscanf sscanf_s Deteksi kesalahan terbatas
wmemcpy wmemcpy_s Deteksi kesalahan terbatas
wnsprintfW
wscanf wscanf_s