보안(C# 프로그래밍 가이드)

업데이트: 2007년 11월

보안은 모든 C# 응용 프로그램에서 필요한 측면이며 디자인 및 구현의 완료 단계뿐만 아니라 모든 개발 단계에서 고려해야 할 사항입니다.

C# 보안 권장 사항

다음 목록은 잠재적인 보안 문제를 빠짐없이 기록한 것은 아닙니다. C# 개발자와 관련된 몇 가지 일반적인 문제를 중점적으로 설명합니다.

  • checked 키워드를 사용하여 정수 계열 형식의 산술 연산 및 변환에 대한 오버플로 검사 컨텍스트를 제어해야 합니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

기타 보안 리소스

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

참고 항목

개념

C# 프로그래밍 가이드

보안 도구

기타 리소스

네이티브 및 .NET Framework 코드의 보안

보안 코딩 지침