Share via


보안과 프로그래밍(C# 및 Visual Basic)

개발자는 .NET Framework 작업을 시작할 때 주요 보안 문제를 해결해야 합니다.이 개요에서는 Windows 및 웹 응용 프로그램과 개발의 구현, 디버깅 및 배포 단계에 대해 설명합니다.

개요

Visual Studio를 사용하면 실행 중인 응용 프로그램의 보안을 제어할 수 있습니다..NET Framework를 사용하여 제어하는 경우 보안을 목적으로 한 프로그래밍을 고려해야 합니다.사용자에게 친숙하고 유용한 응용 프로그램을 만들기 위해서는 몇 가지 보안 문제를 해결해야 합니다.

보안 문제를 해결할 필요가 있는 세 가지의 일반적인 상황은 다음과 같습니다.

  • 권한: 응용 프로그램을 실행하는 사용자는 해당 응용 프로그램에 대한 권한을 거부할 수 있습니다.이러한 상황은 사용자가 일부 시스템 리소스에 액세스하지 못하도록 지정한 위치에서 해당 응용 프로그램이 실행 중인 경우 발생할 수 있습니다.예를 들어, 사용자가 네트워크 드라이브에 저장되는 응용 프로그램에 대한 파일 권한을 거부하도록 공용 언어 런타임을 구성할 수 있습니다.작업할 때 이 점에 유의하여 거부에 올바르게 응답하는 코드를 작성해야 합니다.자세한 내용은 .NET Framework 보안 정책을 참조하십시오.

  • 웹 응용 프로그램: 웹 서버에서 웹 응용 프로그램에 액세스하는 사용자가 서버에서 악의적인 코드를 실행하거나 데이터를 손상시키지 못하도록 해야 합니다.자세한 내용은 ASP.NET 보안을 참조하십시오.

  • Visual Studio 설정: Visual Studio를 설정하는 방법에 따라 서버가 악의적인 코드로부터 공격을 받을 수도 있습니다.자세한 내용은 User Rights and Visual Studio를 참조하십시오.

리소스 보안은 여러 기술이 적용되고 전체 개발 주기에 걸쳐서 이루어지는 프로세스입니다.응용 프로그램에 대한 신중한 디자인, 구현, 테스트 및 배포를 통해 매우 안전한 응용 프로그램을 만들 수 있습니다.ASP.NET에 제공되는 보안 기술, 운영 체제 및 웹 브라우저를 사용하여 응용 프로그램의 보안을 유지할 수 있습니다.

특정 보안 권장 사항

다음 목록은 잠재적인 보안 문제를 빠짐없이 기록한 것은 아닙니다.Visual Basic 및 C# 개발자가 자주 접하는 몇 가지 문제에 대해 설명합니다.

  • 정수 오버플로 검사가 사용되는지 확인합니다.C#에서는 checked 키워드나 고급 빌드 설정 대화 상자(C#)로 정수 오버플로 검사를 사용하도록 설정할 수 있습니다.Visual Basic에서는 고급 컴파일러 설정 대화 상자(Visual Basic)를 사용합니다.

  • 매개 변수에 대해서 항상 가장 제한적인 데이터 형식을 사용해야 합니다.예를 들어 메서드에 데이터 구조의 크기를 설명하는 값을 전달하는 경우 정수 대신 부호 없는 정수를 사용합니다.

  • 파일 이름을 기준으로 결론을 내리지 말아야 합니다.파일 이름은 서로 다른 여러 가지 방식으로 표현할 수 있으며 특정 파일에 대한 테스트를 건너뛸 수 있습니다.

  • 암호나 기타 중요한 정보를 절대로 응용 프로그램에 하드코딩하지 말아야 합니다.

  • SQL 쿼리를 생성하는 데 사용되는 입력에 대해서 항상 유효성을 검사해야 합니다.

  • 메서드에 대한 모든 입력에 대해서 유효성을 검사해야 합니다.System.Text.RegularExpressions 네임스페이스에서 정규식 메서드는 전자 메일 주소와 같이 입력 값의 형식이 올바른지 확인하는 데 유용합니다.

  • 예외 정보를 표시해서는 안 됩니다. 이러한 정보는 공격자에게 중요한 단서를 제공할 수 있습니다.

  • 가능한 한 최소한의 권한으로 응용 프로그램이 실행되도록 해야 합니다.사용자가 관리자로 로그인해야 하는 응용 프로그램의 수는 많지 않습니다.

  • 사용자 고유의 암호화 알고리즘을 사용해서는 안 됩니다.System.Security.Cryptography 클래스를 사용합니다.

  • 어셈블리에 강력한 이름을 부여합니다.

  • 중요한 정보를 XML이나 기타 구성 파일에 저장하지 말아야 합니다.

  • 네이티브 코드를 래핑하는 관리 코드를 주의 깊게 검사해야 합니다.네이티브 코드가 안전한지 확인하십시오.

  • 응용 프로그램 외부에서 전달된 대리자를 사용할 때는 주의를 기울여야 합니다.

  • 어셈블리에서 Visual Studio 코드 분석 도구를 실행하면 Microsoft .NET Framework 디자인 지침을 준수하는지 확인할 수 있습니다.이 도구는 200가지 이상의 코드 결함을 찾아 경고할 수도 있습니다.자세한 내용은 관리 코드에 대한 코드 분석 개요를 참조하십시오.

기타 보안 리소스

다음 Microsoft 웹 사이트에서는 안전하고 신뢰할 수 있는 소프트웨어를 만드는 데 필요한 자세한 정보를 제공합니다.

관련 항목

제목

설명

.NET Framework 보안 기본 사항

.NET Framework 보안을 간략하게 다루고 부분 신뢰 환경에 대한 코딩 기술을 설명합니다.

안전한 응용 프로그램을 만들기 위한 코딩 지원

개발 서버의 보안을 유지하는 데 도움이 되는 Visual Studio 도구를 설명합니다.

코드 액세스 권한 및 보안

리소스 및 작업이 무단으로 사용되지 않도록 보호하는 데 사용되는 개체를 설명합니다.

참고 항목

작업

Visual Basic 보안 샘플

개념

Visual Studio의 보안

보안 코딩 지침

기타 리소스

Windows Forms 보안

ASP.NET 보안