IT 조직을 위한 예제 코드 승인 검사 목록

업데이트 날짜: 2009년 2월

적용 대상: Office SharePoint Server 2007

 

마지막으로 수정된 항목: 2015-03-09

Microsoft Office SharePoint Server 2007 기반 웹 사이트에는 보통 사용자 지정 솔루션이 포함되어 있습니다. Office SharePoint Server 2007에서는 사용자 지정 솔루션을 추가하여 사이트를 사용자 지정하는 유용하고 유동적인 기능이 제공됩니다. 그러나 SharePoint 팜에서 실행되는 실행 모듈을 잘못 디자인하거나 구현하면 해당 모듈을 사용하는 웹 응용 프로그램뿐 아니라 보다 넓은 범위에 대해 좋지 않은 영향을 줄 수 있습니다. 사용자 지정 솔루션을 잘못 구현하면 보안상 위험하거나 성능이 저하되고, 지원 비용이 늘어나며, 배포가 복잡해지고 생산성이 감소할 수 있습니다.

이와 같이 SharePoint 서버 팜에 사용자 지정 솔루션을 설치하면 긍정적이거나 부정적인 영향을 줄 수 있으므로, 모든 사용자 지정 솔루션을 프로덕션 환경에 배포하기 전에 주의 깊게 평가하는 것이 좋습니다. 다음과 같은 영역을 평가해야 합니다.

일반적인 최상의 방법을 준수하여 솔루션을 개발해야 하는 요구 사항 외에도, 개발자에게 검사 목록을 제출하도록 하여 최상의 방법에 따라 솔루션 코드를 작성하고 솔루션을 테스트했는지 확인하는 것이 좋습니다.

배포하는 솔루션이 기업을 불필요한 위험에 노출시키는 일 없이 원하는 이점을 제공할 수 있도록 하려면 다음의 예제 코드 승인 검사 목록을 사용할 수 있습니다. 이 목록을 기반으로 하여 배포용으로 제출되는 솔루션 품질을 확인하기 위한 검사 목록을 직접 작성하십시오. 코드 승인 검사 목록은 솔루션 개발 후에 확인을 수행할 뿐 아니라, 효율적인 교육 도구로도 활용할 수 있습니다. 개발자가 사용자 지정을 구현하기 전에 이 목록을 제공하면 개발자가 개발 및 제출할 솔루션의 품질에 대한 기대치를 전달할 수 있습니다.

중요

이 예제 검사 목록은 정보용으로만 사용해야 하며, 모든 코드 승인 관련 문제를 포함하거나 조직에서 추가적인 측정을 수행하지 않아도 된다고 가정해서는 안 됩니다. 이 검사 목록에 대해서는 명시적이나 암시적으로 어떠한 보증도 제공되지 않습니다.

이 항목의 내용

최상의 SharePoint 개발 방법 리소스

이 섹션에는 개발자가 가용성, 지원 가능성, 성능 및 보안을 위한 IT 요구 사항을 충족하는 솔루션을 디자인 및 구현하도록 하기 위해 제공할 수 있는 리소스 목록이 들어 있습니다.

코드 승인 검사 목록

이 섹션에서 코드 승인 검사 목록은 보안, 세션 관리, 유효성 검사, 중요한 데이터, 예외 처리, 웹 파트, 문서화, 일반 소프트웨어 개발 최상의 방법 범주로 구성되어 있습니다. 전체 검사 목록의 인쇄 및 수정 가능한 버전은 코드 승인 검사 목록의 인쇄 가능한 버전(https://go.microsoft.com/fwlink/?linkid=125134&clcid=0x412)을 참조하십시오.

참고

이 문서에 나와 있는 검사 목록은 기업의 요구에 따라 코드 승인 검사 목록을 직접 개발하는 데 사용할 수 있는 예제로서 제공됩니다. 예제 검사 목록을 기반으로 검사 목록을 직접 개발하십시오.

보안

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 보안 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

응용 프로그램에서 예외 목록(알려진 악성 입력이나 위험한 입력 거부)이 아닌 포함 목록(알려진 입력, 유효한 입력, 안전한 입력)을 사용합니다.

[ ]

모든 사용자 입력이 클라이언트에게 표시될 때 IOSec을 사용하여 인코딩됩니다.

[ ]

문자 인코딩이 서버에서 설정됩니다(ISO-8859-1 권장).

[ ]

기본 텍스트 암호는 Web.config, Machine.config 또는 구성 설정이 포함된 파일에 표시되지 않습니다. Aspnet_setreg.exe 및 Trustee와 같은 유틸리티 또는 IIS 6.0이나 IIS 7.0의 AppPool에 포함된 ID 설정을 사용하여 자격 증명을 암호화합니다.

[ ]

중요한 데이터가 포함된 쿠키는 보안 쿠키로 표시됩니다.

[ ]

웹 파트 및 기타 사용자 지정의 입력 영역에는 사이트 간 스크립팅 및 SQL 주입을 차단하기 위한 경계 확인, 입력 데이터 무결성 확인 및 적절한 예외 처리 기능이 포함되어 있습니다.

[ ]

디자인을 통해 잠재적 정규화 문제를 파악할 수 있습니다.

[ ]

AllowUnsafeUpdates는 사용하지 않는 것이 좋습니다. ValidateFormDigest()를 사용하고, 필요한 경우에는 고급 권한을 사용하여 SharePoint 개체와 상호 작용합니다. AllowUnsafeUpdates를 사용해야 하는 경우에는 try-catch-finally 블록에서 AllowUnsafeUpdates가 False로 설정되어 있는지 확인하거나, IDisposable 인터페이스에서 필요한 Dispose() 메서드를 사용하여 보안 문제를 방지해야 합니다.

세션 관리

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 세션 관리 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

세션 상태가 정상적이고 예측할 수 없으며 무단 액세스 또는 재생 공격이 차단되어야 합니다.

[ ]

세션 수명은 최대 30분의 비활성 시간으로 제한됩니다.

[ ]

세션 식별자는 URL에서 전달되지 않으며 ASP.NET 기능은 쿠키를 사용하지 않는 세션은 사용되지 않습니다.

[ ]

세션 상태 서비스는 사용하지 않는 경우 비활성화됩니다.

유효성 검사

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 입력 유효성 검사 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

식별된 모든 입력 지점(양식 필드, 쿼리 문자열, 쿠키, HTTP 헤더, 웹 서비스 매개 변수)에서 입력 유효성 검사가 적용됩니다.

[ ]

가능한 경우 ASP.NET validateRequest 옵션이 사용됩니다.

[ ]

날짜의 유형, 길이, 형식 및 범위 유효성을 검사합니다.

[ ]

보안에서 클라이언트 쪽 유효성 검사를 사용하지 않으며, 서버 쪽에서 유효성 검사가 수행됩니다.

[ ]

응용 프로그램에서는 일관적으로 RegEx와 같은 표준화된 입력 유효성 검사를 계속 사용합니다.

중요한 데이터

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 중요한 데이터 보호 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

응용 프로그램에서 중요한 데이터를 일반 텍스트로 기록하지 않습니다.

[ ]

중요한 데이터가 쿠키에 저장되지 않습니다.

[ ]

중요한 데이터가 암호화되지 않은 숨겨진 양식 필드나 쿼리 문자열에 저장되지 않으며, 서버 쪽 상태 관리를 사용하여 유지 관리됩니다.

[ ]

SSL, IPSEC(암호화 포함) 또는 전송 전의 응용 프로그램 계층 암호화를 통해 전송 중에 중요한 데이터를 보호합니다.

[ ]

중요한 데이터는 캐싱되지 않으며 출력 캐시는 기본적으로 해제됩니다.

[ ]

전자 메일을 통해 전송되는 중요한 데이터는 해당 받는 사람에 따라 S/MIME 암호화 또는 IRM(정보 권한 관리)을 사용합니다.

예외 처리

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 예외 처리 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

응용 프로그램에서 구조적인 오류 및 예외 처리에 대해 전체적으로 표준화된 방식을 사용합니다.

[ ]

오류가 일관성 있는 SharePoint 방식으로 표시되도록 하기 위해 오류 처리 코드는 SPException 클래스에서 상속됩니다.

[ ]

오류 및 예외가 발생하는 경우에도 응용 프로그램이 안전하게 실패합니다.

[ ]

예외 상황에서 사용자는 권한이 있는 코드 실행을 위한 보안 검사를 무시할 수 없습니다.

[ ]

응용 프로그램에서 클라이언트에 대해 일반 사용자 지정 오류 메시지를 반환합니다.

[ ]

코드가 예외 처리를 사용하며 사용자가 알고 있는 예외만 catch합니다. 예를 들어 오류가 다시 throw되는 경우가 아니면 try{} catch(Exception ex){}를 사용하지 마십시오.

[ ]

코드에서 예외 필터를 사용하는 경우에는 실행 순서를 필터링해도 됩니다. 필터는 finally 블록 전에 실행됩니다.

[ ]

응용 프로그램 오류에 중요한 정보나 오류를 악용하는 데 사용될 수 있는 정보가 들어 있지 않습니다.

웹 파트

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 웹 파트 개발 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

사용자 지정 웹 파트(리소스 파일 포함)가 SharePoint 기능 내에 포함되며 배포를 위해 SharePoint 솔루션으로 패키지됩니다.

[ ]

배포 대상 웹 파트의 구성은 유동적이므로 개발자가 웹 응용 프로그램 이하 수준으로 배포할 수 있습니다.

[ ]

SharePoint 웹 파트 인프라의 표준화된 웹 파트용 연결 인터페이스 집합을 사용하여 런타임에 서로 정보를 교환합니다.

[ ]

효율적인 기술 지원을 위해, 가능한 경우에는 항상 적절한 설명서와 함께 타사 웹 파트 솔루션의 소스 코드가 제공됩니다.

[ ]

모든 사용자 지정 웹 파트는 SharePoint 아키텍처를 사용하여 응용 프로그램 전체에서 Single Sign-On, 기능 배포 등의 기능에 대해 일관성 있는 동작을 유지합니다.

문서화

배포해야 하는 사용자 지정 내용이 설치 및 지원 가능하며 효율적인 테스트를 거쳤음을 확인하려면 적절한 문서를 작성해야 합니다. 또한 문서화를 통해 사용자 지정으로 인해 생성되는 모든 오류가 적절하게 설명 및 진단되었음을 나타낼 수 있습니다. 이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 문서화 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

사용자 지정은 패키지 설치 및 제거 방법을 자세하게 설명하는 설치 지침과 함께 제공됩니다. 솔루션 설치와 관련된 아키텍처 다이어그램도 포함됩니다. 솔루션을 롤백할 수 없는 경우에는 관련 위험에 대해 논의하고 시스템 복구 계획을 준비할 수 있도록 설치 지침에서 설명해야 합니다.

[ ]

사용자 지정 내용은 테스트 문서 및 결과와 함께 제공됩니다.

[ ]

사용자 지정 내용은 모든 종속 항목 목록과 함께 제공됩니다. 여기에는 계정/암호, 웹 서비스, 데이터베이스, 기타 솔루션 또는 기능, 패치, 도구 세트 또는 라이브러리 및 기타 종속 항목이 포함될 수 있습니다.

[ ]

사용자 지정으로 인해 생성되는 모든 이벤트 항목과 그에 대해 취할 조치가 포함된 목록이 제공됩니다. 이 목록은 오류 코드 표 형식일 수 있으며, 이 표에는 각 코드의 심각도 및 근본 원인이 제공됩니다.

[ ]

필요한 경우 IT 조직에서 유효성 검사 및 테스트를 수행할 수 있도록 소스 코드가 제공됩니다.

[ ]

이전에 배포한 사용자 지정의 업그레이드인 사용자 지정은 변경 내용, 사용자 지정 업그레이드 관련 고려 사항 및 롤백 지침을 설명하는 설명서와 함께 제공됩니다.

일반 소프트웨어 개발 최상의 방법

이 코드 승인 검사 목록 섹션에는 SharePoint 환경에서 배포를 위해 제출되는 솔루션이 최상의 소프트웨어 개발 방법을 사용하여 개발되었는지를 확인하는 데 사용할 수 있는 제안 항목이 포함되어 있습니다.

[ ]

어셈블리에 강력한 이름이 지정됩니다. 동적으로 생성된 ASP.NET 웹 페이지 어셈블리는 현재 강력한 이름을 사용할 수 없습니다.

[ ]

서명 연기를 사용하여 강력한 이름 및 서명 프로세스에 사용되는 개인 키를 보호 및 제한합니다.

[ ]

어셈블리에 최소 사용 권한 요구 사항을 지정하기 위한 선언적 보안 특성(SecurityAction.RequestMinimum 포함)이 포함됩니다.

[ ]

권한이 높은 어셈블리가 권한이 낮은 어셈블리와 구분됩니다.

[ ]

어셈블리를 부분 신뢰 환경에서 사용하는 경우(예: 부분 신뢰 웹 응용 프로그램에서 호출하는 경우) 권한이 있는 코드가 별도의 어셈블리에 배치됩니다.

[ ]

구성을 Web.config로 변경하는 대신 네이티브 구성 파일을 사용하여 응용 프로그램을 지원합니다.

[ ]

.NET Framework 2.0, 3.0 또는 3.5를 사용합니다.

[ ]

단일 .NET Framework 버전을 사용하며 여러 버전을 혼합해 사용하지 않습니다.

[ ]

64비트 호환 코드를 사용합니다.

[ ]

응용 프로그램에서 SharePoint 데이터베이스에 직접 액세스하지 않으며, SharePoint 데이터베이스에 저장된 데이터는 SharePoint 개체 모델을 통해서만 업데이트됩니다.

[ ]

문자열 및 레이블을 하드 코드하지 않으며, 대신 리소스 또는 언어 파일을 사용합니다.

[ ]

SPWeb 또는 SPSite 개체를 참조할 때 using 문을 사용하거나 .Dispose 메서드를 명시적으로 호출하여 메모리 개체를 적절하게 사용 및 폐기합니다.

[ ]

캐싱을 적절하게 사용하여 불필요한 왕복을 줄입니다. 웹 파트에 대해서는 캐시 만료(기간)를 웹 파트 속성으로 노출합니다.

[ ]

솔루션 패키지를 만들 때 솔루션에 대한 코드 액세스 보안 정책을 포함하고, 필요한 경우에는 솔루션을 통해 어셈블리를 안전한 컨트롤 목록에 포함합니다.

[ ]

코드를 기록할 때 포털 로그 클래스를 사용하여 SharePoint ULS(통합 로깅 서비스) 로그를 기록합니다.

[ ]

원격 코드를 사용하여 여러 목록 항목을 업데이트해야 하는 경우에는 웹 서비스를 사용하여 목록 항목을 업데이트합니다. SPListItem.Update()는 로컬 OM 기반 코드를 사용해 한 번에 여러 항목을 업데이트해야 하는 경우에만 사용합니다.

[ ]

SPListItemCollection의 Count 속성을 사용할 때는 속성을 한 번만 호출한 다음 반복 시 참조할 수 있는 변수에 저장하며, 루프 내에서는 호출하지 않습니다.

[ ]

솔루션에서는 AppSettings 개체를 사용하여 XML 매핑을 구현합니다. .NET 2.0, 3.0 또는 3.5의 설정 보존 프레임워크를 사용하여 이 매핑을 제공할 수 있습니다. 솔루션은 XML 매핑을 위해 사용자 지정 XML 파일과 강력한 형식이 지정된 개체를 만들지 않습니다.

[ ]

설치 및 제거 중에 운영 관련 문제를 적절하게 해결할 수 있도록 이벤트 로그에 설치 및 배포 로깅 기능이 제공됩니다.

이 문서의 다운로드

이 항목은 다운로드 가능한 다음 문서에도 포함되어 있어 더 쉽게 읽고 인쇄할 수 있습니다.

사용 가능한 문서의 전체 목록은 다운로드 가능한 Office SharePoint Server 2007 관련 콘텐츠를 참조하십시오.