다음을 통해 공유


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

업데이트: 2007년 11월

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

Visual C++ 보안 기능

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

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

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

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

보안이 강화된 CRT

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

확인된 반복기

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

관리 코드에 대한 코드 분석

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

  • 라이브러리 디자인

  • 지역화

  • 명명 규칙

  • 성능

  • 보안

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

Windows 응용 프로그램 검증 도구

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

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

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

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

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

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

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

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

.NET Framework 보안 기능

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

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

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

Windows 사용자 계정

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

Windows Vista에서 UAC(사용자 계정 컨트롤)를 사용한 보안 강화

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

참고 항목

개념

UAC(사용자 계정 컨트롤)가 응용 프로그램에 주는 영향

참조

System.Security

기타 리소스

응용 프로그램 보안