경고 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 |