strtok함수의 보안경고에 대한 질문이 있습니다.
, 노 농님이 작성strtok함수를 쓰기 위해서는 보안 경고 에러 방지를 위해 "#define _CRT_ SECURE_NO_WARNINGS" 작업을 따로 해줘야 하는 부분이 계속 안 외워집니다...ㅜㅜ 혹시 strtok를 사용할 때 보안 문제가 왜 생기는지 알 수 있을까요??
Re: strtok함수의 보안경고에 대한 질문이 있습니다.
, 도장_ 관리자님이 작성범위를 넘어가는 것에 대해서 C 언어는 자유롭습니다.
이로 인해서 다양한 over-write, 쓰기가 가능하고 이는 권한 탈취 등의 보안 버그로 사용됩니다.
strtok_s 같은 함수가 있습니다. 이는 C11에서만 지원합니다.
C 언어는 수많은 레거시가 있고, 여전히 과거에도 지금도 strtok 함수가 쓰입니다.
strtok 함수를 아예 쓰지 말라고 경고하는 것은 Visual Studio가 유일합니다. 그러나 현장에서 리눅스 분야에서 코딩한다면 strtok를 사용한다고 경고가 발생하지는 않습니다. GCC, Clang을 쓰세요. 그러면 경고는 없습니다.
이는 Visual Studio를 만든 MS의 정책일 뿐입니다.
scanf_s 함수는 Visual Studio에서만 지원하고, 비표준 함수라 다른 플랫폼에서는 지원하지도 않습니다. 코딩 테스트는 주로 리눅스 환경에서 이뤄지는데 리눅스 환경에서는 scanf_s 함수를 지원하는 컴파일러가 있는지 모르겠습니다. GCC, Clang에서는 지원하지 않습니다. 코딩 테스트 문제를 모두 풀어 놓고도 0점으로 탈락할 수 있습니다. Visual Studio를 따르지 마세요. 그냥 표준을 따르세요.
https://www.youtube.com/watch?v=WXYBoM20f5g
VS 2022와 큰 차이 없으니 이거 보고 컴파일러를 Clang으로 바꾸는 것도 방법입니다.