다음 목록은 잠재적인 보안 문제를 빠짐없이 망라한 것이 아닙니다. 이 목록에서는 C# 개발자가 주의해야 할 몇 가지 일반적인 문제만을 중점적으로 설명합니다.
# checked 키워드를 사용하여 정수 계열 형식의 산술 연산 및 변환에 대한 오버플로 검사 컨텍스트를 제어해야 합니다.
# 매개 변수에 대해서 항상 가장 제한적인 데이터 형식을 사용해야 합니다. 예를 들어, 메서드에 데이터 구조의 크기를 나타내는 값을 전달하는 경우 정수 대신 부호 없는 정수를 사용합니다.
# 파일의 이름을 기준으로 판단해서는 안 됩니다. 파일 이름의 표현 방식은 다양하며, 특정 파일만을 대상으로 하는 테스트는 우회될 수 있습니다.
# 암호나 기타 중요한 정보를 절대로 응용 프로그램에 하드코딩하지 말아야 합니다.
# SQL 쿼리를 생성하는 데 사용되는 입력에 대해서 항상 유효성을 검사해야 합니다.
# 메서드에 대한 모든 입력에 대해서 유효성을 검사해야 합니다. System.Text.RegularExpressions 네임스페이스의 정규식 메서드는 전자 메일 주소와 같은 경우에 입력 값의 형식이 올바른지 확인하는 데 유용합니다.
# 예외 정보를 표시해서는 안 됩니다. 이러한 정보는 공격자에게 중요한 단서를 제공할 수 있습니다.
# 가능한 한 최소한의 권한으로 응용 프로그램이 실행되도록 해야 합니다. 사용자가 관리자 권한으로 로그인해야 하는 응용 프로그램은 거의 없습니다.
# 자체 암호화 알고리즘을 사용하지 말고 System.Security.Cryptography 클래스를 사용해야 합니다.
# 어셈블리에 강력한 이름을 부여해야 합니다.
# 중요한 정보를 XML이나 기타 구성 파일에 저장하지 말아야 합니다.
# 네이티브 코드를 래핑하는 관리 코드를 주의 깊게 검사해야 합니다. 특히 버퍼 오버런과 관련하여 네이티브 코드가 안전한지 확인할 필요가 있습니다.
# 응용 프로그램 외부에서 전달되는 대리자를 사용할 때는 주의해야 합니다.
# FxCop을 실행하여 어셈블리가 Microsoft .NET Framework 디자인 지침을 준수하고 있는지 확인합니다. 또한 FxCop에서는 200가지 이상의 코드 결함을 찾아내어 경고할 수 있습니다.
# 매개 변수에 대해서 항상 가장 제한적인 데이터 형식을 사용해야 합니다. 예를 들어, 메서드에 데이터 구조의 크기를 나타내는 값을 전달하는 경우 정수 대신 부호 없는 정수를 사용합니다.
# 파일의 이름을 기준으로 판단해서는 안 됩니다. 파일 이름의 표현 방식은 다양하며, 특정 파일만을 대상으로 하는 테스트는 우회될 수 있습니다.
# 암호나 기타 중요한 정보를 절대로 응용 프로그램에 하드코딩하지 말아야 합니다.
# SQL 쿼리를 생성하는 데 사용되는 입력에 대해서 항상 유효성을 검사해야 합니다.
# 메서드에 대한 모든 입력에 대해서 유효성을 검사해야 합니다. System.Text.RegularExpressions 네임스페이스의 정규식 메서드는 전자 메일 주소와 같은 경우에 입력 값의 형식이 올바른지 확인하는 데 유용합니다.
# 예외 정보를 표시해서는 안 됩니다. 이러한 정보는 공격자에게 중요한 단서를 제공할 수 있습니다.
# 가능한 한 최소한의 권한으로 응용 프로그램이 실행되도록 해야 합니다. 사용자가 관리자 권한으로 로그인해야 하는 응용 프로그램은 거의 없습니다.
# 자체 암호화 알고리즘을 사용하지 말고 System.Security.Cryptography 클래스를 사용해야 합니다.
# 어셈블리에 강력한 이름을 부여해야 합니다.
# 중요한 정보를 XML이나 기타 구성 파일에 저장하지 말아야 합니다.
# 네이티브 코드를 래핑하는 관리 코드를 주의 깊게 검사해야 합니다. 특히 버퍼 오버런과 관련하여 네이티브 코드가 안전한지 확인할 필요가 있습니다.
# 응용 프로그램 외부에서 전달되는 대리자를 사용할 때는 주의해야 합니다.
# FxCop을 실행하여 어셈블리가 Microsoft .NET Framework 디자인 지침을 준수하고 있는지 확인합니다. 또한 FxCop에서는 200가지 이상의 코드 결함을 찾아내어 경고할 수 있습니다.
FxCop는 http://www.gotdotnet.com/team/fxcop/ 에서 다운로드 가능하며, 상당히 괜찮은 툴입니다.
출처: MSDN
댓글 없음:
댓글 쓰기