다음을 통해 공유


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 형식 문자열입니다.

참고 항목

참조

보안 템플릿 오버 로드

CRT 라이브러리 기능

개념

매개 변수 유효성 검사