CRT의 보안 기능
많은 기존 CRT 함수에서 더욱 안전한 버전이 있습니다.보안 함수가 존재, 이전, 안전성이 버전이 더 이상 사용 되지 표시 된 새 버전 경우에 _s ("보안") 접미사입니다.
이 컨텍스트에서 "더" 방금 함수의 사용은 권장 되지 않습니다 의미 합니다. 이 함수는 CRT에서 제거 될 예정입니다 나타내는 것은 아닙니다.
보안 기능 하지 못하도록 하지 않거나 보안 오류를 수정 합니다. 오히려 발생할 때 오류 catch 합니다.이러한 오류 조건에 대 한 추가 검사를 수행 하 고 오류가의 경우에 오류 처리기를 호출 (참조 하십시오 매개 변수 유효성 검사).
예를 들어 있는 strcpy 함수를 복사 하는 문자열을 대상 버퍼에 대 한 너무 큰 인지를 알려 주는 방법이 있습니다.그러나 보안 대응, strcpy_s의 버퍼 크기를 매개 변수로 사용, 버퍼 오버런이 발생 하는 경우를 결정할 수 있도록 발생 합니다.사용 하는 경우 strcpy_s 11 개의 문자에 오류가 않았는데; 10 문자 버퍼를 복사 하 strcpy_s에 실수를 수정할 수 있지만 오류를 감지 하 고 잘못 된 매개 변수 처리기를 호출 하 여 알려 수 있습니다.
내용의 경고 제거
이전, 안전성이 함수에 대 한 내용의 경고를 제거 하는 여러 가지가 있습니다.가장 쉬운 간단 하 게 정의 하는 것 _CRT_SECURE_NO_WARNINGS 또는 사용 하는 warning pragma입니다.내용의 경고를 할 수 없게 하지만 물론 경고를 발생 시킨 보안 문제가 여전히 존재 합니다.내용의 경고 활성화와 새로운 CRT 보안 기능을 사용 하지 않으려면 훨씬 좋습니다.
C + +에서는를 위한 가장 쉬운 방법은 사용 하는 것 보안 템플릿 오버 로드, 대부분의 경우에는 제거 내용의 경고 사용 되지 않는 함수 호출을 해당 함수의 새로운 보안 버전에 대 한 호출으로 대체 하 여.예를 들어,이 호출 하는 사용 되지 것이 좋습니다 strcpy:
char szBuf[10];
strcpy(szBuf, "test"); // warning: deprecated
정의 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 변경 하 여이 경고를 제거 하는 것은 strcpy 호출 합니다. strcpy_s, 버퍼 오버런을 방지 합니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.
이러한 사용 되지 않는 함수에 대 한 보안 템플릿 오버 로드 하지 않고 확실히 안전한 버전을 사용 하려면 코드를 수동으로 업데이트 고려해 야 합니다.
다른 보안에 관련 되지 않은 내용의 경고, POSIX 함수입니다.에 상응 하는 표준 POSIX 함수 이름을 바꿉니다 (예를 들어, 변경 액세스 에 _access), POSIX와 관련 된 내용의 경고를 정의 하 여 사용 하지 않도록 설정 하거나 _CRT_NONSTDC_NO_WARNINGS.자세한 내용은 Deprecated CRT Functions를 참조하십시오.
추가 보안 기능
보안 기능은 다음과 같습니다.
Parameter Validation.두 보안 기능 및 많은 기존 버전의 함수에서 CRT 함수에 전달 된 매개 변수 확인 됩니다.이러한 유효성 검사는 다음과 같습니다.
확인 NULL 값이 함수에 전달 합니다.
열거 값의 유효성을 검사 합니다.
정수 계열 값 올바른 범위에 있는지 확인 합니다.
자세한 내용은 매개 변수 유효성 검사를 참조하십시오.
잘못 된 매개 변수를 처리기 또한 개발자가 액세스할 수 있습니다.CRT는 잘못 된 가정 하 고 응용 프로그램을 종료 하는 대신 매개를 발생할 경우 이러한 문제를 확인 하는 방법을 제공의 _set_invalid_parameter_handler 함수입니다.
Sized Buffers.버퍼에 기록 된 함수에 버퍼 크기를 전달 된 보안 함수가 필요 합니다.악의 있는 코드를 실행 하는 위험한 버퍼 오버런 오류를 방지 하는 데 작성을 하기 전에 버퍼가 충분히 크지 보안 버전의 유효성을 검사 합니다.일반적으로 이러한 함수는 반환 된 errno 오류 코드를 입력 하 고 버퍼의 크기가 너무 작은 경우 잘못 된 매개 변수 처리기를 호출 합니다.입력된 버퍼에서 같이 읽을 함수 gets, 최대 크기를 지정 하도록 요구 하는 보안 버전 있어야 합니다.
Null termination.에 문자열이 있는지 확인 하는 안전한 버전 왼쪽된 문자열 종료 되지 않은 잠재적으로 일부 기능이 올바르게 null 종료.
Enhanced error reporting.보안 함수 오류 코드를 기존 함수를 사용할 수 있는 보다 자세한 오류 정보를 반환 합니다.보안 기능 및 대부분의 기존 함수에 이제 설정 errno 값을 반환 하는 errno 코드 형식, 오류 보고를 제공 합니다.
Filesystem security.안전한 파일 I/O Api 지원 보안 파일 액세스가 기본적.
Windows security.보안 프로세스 Api 보안 정책을 적용 하 고 Acl을 지정할 수 있습니다.
Format string syntax checking.잘못 된 문자열은 인식 예를 들어, 잘못 된 형식 필드 문자를 사용 하 여 printf 형식 문자열입니다.