관리 코드에 대한 관리 권장 규칙 규칙 집합
Microsoft 관리된 권장 규칙이라는 규칙 집합을 사용하면 잠재적 보안 허점, 응용 프로그램 충돌, 기타 중요한 논리 및 디자인 오류를 비롯하여 관리된 코드의 가장 중요한 문제에 초점을 맞출 수 있습니다.프로젝트에 대해 만드는 모든 사용자 지정 규칙 집합에 이 규칙 집합을 포함해야 합니다.
규칙 |
설명 |
---|---|
삭제 가능한 필드가 있는 형식은 삭제 가능해야 합니다. |
|
이벤트 처리기를 제대로 선언하십시오. |
|
AssemblyVersionAttribute로 어셈블리 표시 |
|
인터페이스 메서드는 자식 형식에서 호출할 수 있어야 합니다. |
|
네이티브 리소스가 있는 형식은 삭제 가능해야 합니다. |
|
P/Invoke를 NativeMethods 클래스로 이동 |
|
기본 클래스 메서드를 숨기지 마십시오. |
|
IDisposable을 올바르게 구현하십시오. |
|
예기치 않은 위치에서 예외를 발생시키지 마십시오. |
|
중복 액셀러레이터 키를 사용하지 마십시오. |
|
P/Invoke 진입점이 있어야 합니다. |
|
P/Invoke는 노출되지 않아야 합니다. |
|
자동 레이아웃 형식은 COM 노출이면 안 됩니다. |
|
P/Invoke 다음에 바로 GetLastError를 호출하십시오. |
|
COM 노출 형식의 기본 형식은 COM 노출이어야 합니다. |
|
COM 등록 메서드는 일치해야 합니다. |
|
P/Invoke를 올바르게 선언하십시오. |
|
빈 종료자를 제거하십시오. |
|
값 형식 필드는 이식 가능해야 합니다. |
|
P/Invoke 선언은 이식 가능해야 합니다. |
|
약한 ID를 가진 개체를 잠그지 마십시오. |
|
보안상 취약한 부분이 있는지 SQL 쿼리를 검토하십시오. |
|
P/Invoke 문자열 인수에 대해 마샬링을 지정하십시오. |
|
값 형식에서 선언적 보안을 검토하십시오. |
|
포인터는 노출되면 안 됩니다. |
|
보안 형식은 필드를 노출하면 안 됩니다. |
|
메서드 보안은 형식의 상위 집합이어야 합니다. |
|
APTCA 메서드는 APTCA 메서드만 호출해야 합니다. |
|
APTCA 형식은 APTCA 기본 형식만 확장해야 합니다. |
|
링크 요청이 있는 메서드를 간접적으로 노출하지 마십시오. |
|
재정의 링크 요청은 기본 형식의 링크 요청과 같아야 합니다. |
|
취약한 finally 절을 외부 try에 래핑하십시오. |
|
형식 링크 요청에는 상속 요청이 필요합니다. |
|
보안에 중요한 형식은 형식 등가에 참여할 수 없습니다. |
|
기본 생성자는 기본 형식의 기본 생성자 이상으로 중요해야 합니다. |
|
대리인은 투명도가 일관된 메서드에 바인딩해야 합니다. |
|
메서드는 기본 메서드를 재정의할 때 일관성 있는 방식을 유지해야 합니다. |
|
투명한 메서드는 안정형 IL만 포함해야 합니다. |
|
투명한 메서드는 SuppressUnmanagedCodeSecurity 특성을 가진 메서드를 호출해서는 안 됩니다. |
|
투명 코드는 보안에 중요한 항목을 참조해서는 안 됩니다. |
|
투명한 메서드는 LinkDemands를 충족해서는 안 됩니다 |
|
형식은 기본 형식 및 인터페이스 이상으로 중요해야 합니다. |
|
투명 메서드는 보안 어설션을 사용할 수 없습니다. |
|
투명한 메서드는 네이티브 코드를 호출해서는 안 됩니다. |
|
스택 정보를 유지하도록 다시 throw하십시오. |
|
개체를 여러 번 삭제하지 마십시오. |
|
값 형식 정적 필드를 인라인으로 초기화하십시오. |
|
서비스 구성 요소를 WebMethod를 사용하여 표시하지 마십시오. |
|
삭제 가능한 필드는 삭제해야 합니다. |
|
재정의 가능한 메서드를 생성자에서 호출하지 마십시오. |
|
삭제 가능한 형식은 종료자를 선언해야 합니다. |
|
종료자는 기본 클래스 종료자를 호출해야 합니다. |
|
serialization 생성자를 구현하십시오. |
|
ValueType.Equals를 재정의할 때 같음 연산자를 오버로드하십시오. |
|
Windows Forms 진입점을 STAThread를 사용하여 표시하십시오. |
|
모두 serialize할 수 없는 필드로 표시하십시오. |
|
ISerializable 형식에서 기본 클래스 메서드를 호출하십시오. |
|
ISerializable 형식을 SerializableAttribute로 표시하십시오. |
|
serialization 메서드를 올바르게 구현하십시오. |
|
ISerializable을 올바르게 구현하십시오. |
|
형식 메서드에 올바른 인수를 제공하십시오. |
|
NaN에 대해 정확하게 테스트하십시오. |