이 설명서는 보관되지만 유지 되지 않습니다.

C++의 최선의 보안 구현 방법

업데이트: 2007년 11월

이 항목에서는 권장되는 보안 도구 및 구현 방법에 대한 정보를 제공합니다. 이러한 리소스와 도구를 사용한다고 해서 응용 프로그램이 공격으로부터 완전히 보호되는 것은 아니지만 공격을 상당 부분 방어할 수는 있습니다.

이 단원에서는 Visual C++ 컴파일러와 링커에 기본으로 제공되는 보안 기능에 대해 설명합니다.

/GS(버퍼 보안 검사)

이 컴파일러 옵션은 악용될 위험이 있는 함수에 오버런 감지 코드를 삽입하도록 컴파일러에 지시합니다. 오버런이 감지되면 실행이 중지됩니다. 이 옵션은 기본적으로 설정되어 있습니다.

/SAFESEH(이미지에 안전한 예외 처리기 포함)

이 링커 옵션은 각 예외 처리기의 주소가 들어 있는 표를 출력 이미지에 포함하도록 링커에 지시합니다. 런타임에 운영 체제에서는 이 표를 사용하여 적합한 예외 처리기만 실행되도록 합니다. 이렇게 하면 런타임에 악의적인 공격으로 삽입된 예외 처리기가 실행되지 않도록 할 수 있습니다. 이 옵션은 기본적으로 비활성화됩니다.

/analyze(엔터프라이즈 코드 분석)

이 컴파일러 옵션은 버퍼 오버런, 초기화되지 않은 메모리, null 포인터 역참조 및 메모리 누수와 같은 잠재적인 보안 문제를 보고하는 코드 분석을 활성화합니다. 이 옵션은 기본적으로 비활성화됩니다. 자세한 내용은 C/C++용 코드 분석 개요를 참조하십시오.

Visual C++ 2005에서는 보안 문제가 발생할 수 있는 함수의 보안 버전을 포함하도록 CRT(C 런타임 라이브러리)가 확장되었습니다. 확인되지 않은 strcpy 문자열 복사 함수를 예로 들 수 있습니다. 이러한 함수의 안전하지 않은 이전 버전은 이제 사용되지 않으며 이러한 함수 버전을 사용하면 컴파일 타임 경고가 발생합니다. 이 컴파일 경고를 무시하지 말고 안전한 버전의 CRT 함수를 사용해야 합니다. 자세한 내용은 Security Enhancements in the CRT를 참조하십시오.

확인된 반복기를 사용하면 컨테이너의 경계 밖에서 요소에 액세스하려는 시도가 있음을 표준 C++ 라이브러리 컨테이너 클래스 사용자에게 알릴 수 있습니다. 자세한 내용은 Checked Iterators를 참조하십시오.

FxCop라고도 하는 관리 코드에 대한 코드 분석은 Microsoft .NET Framework 디자인 지침에 따라 어셈블리를 검사하는 도구입니다. FxCop는 각 어셈블리 내의 코드와 메타데이터를 분석하여 다음과 같은 영역에 결함이 있는지 검사합니다.

  • 라이브러리 디자인

  • 지역화

  • 명명 규칙

  • 성능

  • 보안

관리 코드에 대한 코드 분석은 Visual Studio Team System에 포함되어 있으며 http://www.gotdotnet.com/team/fxcop/에서 다운로드할 수도 있습니다.

응용 프로그램 호환성 도구 키트의 일부로 제공되는 응용 프로그램 검증 도구(AppVerifier)는 개발자가 응용 프로그램의 잠재적 호환성, 안정성, 보안 문제 등을 확인하는 데 사용할 수 있는 도구입니다.

AppVerifier는 응용 프로그램이 실행되는 동안 응용 프로그램에서 사용하는 운영 체제의 파일 시스템, 레지스트리, 메모리, API 등을 모니터링합니다. 그런 다음 이 도구에서는 중대한 문제에 대해 소스 코드 수준에서 수정하도록 지침을 제공합니다.

해당 검증 도구를 사용하여 다음 작업을 수행합니다.

  • 일반적인 프로그래밍 실수로 인해 발생하는 응용 프로그램의 잠재적 호환성 오류를 테스트합니다.

  • 응용 프로그램에서 메모리 관련 문제를 검사합니다.

  • Designed for Windows XP 또는 Certified for Windows Server™ 2003 Logo Programs의 여러 가지 요구 사항을 응용 프로그램이 충족하는지 확인합니다.

  • 응용 프로그램의 잠재적 보안 문제를 확인합니다.

Windows 응용 프로그램 검증 도구는 에서 다운로드할 수 있습니다.

이 단원에서는 두 개의 .NET Framework 보안 기능에 대한 개요를 제공합니다.

코드 액세스 보안

.NET Framework 보안 시스템에 대해 설명하고 이 시스템이 응용 프로그램 코드와 상호 작용하는 방식에 대해 설명합니다.

보안 정책 구성

.NET Framework 보안 정책을 조정하는 데 필요한 지침과 도구에 대해 설명합니다.

관리자 그룹에 속한 Windows 사용자 계정을 사용하면 개발자와 사용자가 보안 위험에 처할 수 있습니다. 자세한 내용은 사용자 그룹의 멤버로 실행을 참조하십시오.

UAC(사용자 계정 컨트롤)는 사용자 계정의 권한을 제한하는 Windows Vista의 기능입니다. 자세한 내용은 UAC(사용자 계정 컨트롤)가 응용 프로그램에 주는 영향을 참조하십시오.

표시: