다음을 통해 공유


확인할 수 있는 형식 안전 코드 작성

업데이트: 2007년 11월

형식 안전 코드는 명확하게 정의된, 허용되는 방법으로만 형식에 액세스하는 코드입니다. 예를 들어, 올바른 개체 참조에 대해 형식 안전 코드는 실제 필드 멤버에 대응하는 고정 오프셋에서 메모리에 액세스할 수 있습니다. 그러나, 이 코드가 공개적으로 노출된 개체 필드에 속하는 메모리 범위 밖의 임의의 오프셋에서 메모리에 액세스하면 형식 안전 코드가 아닙니다.

JIT 컴파일은 코드를 검사하여 형식 안전 코드 여부를 결정하는 확인이라는 프로세스를 수행합니다. 확인하는 동안 형식 안전이라고 확인된 코드를 확인할 수 있는 형식 안전 코드라고 합니다. 코드는 형식 안전 코드일 수 있지만, 확인 프로세스나 컴파일러의 제한에 의해 확인할 수 있는 형식 안전 코드가 아닐 수도 있습니다. 모든 언어가 형식 안전 언어는 아니며, Microsoft Visual C++ 등의 일부 언어 컴파일러는 확인할 수 있는 형식 안전의, 관리 코드를 생성할 수 없습니다. 사용하는 언어 컴파일러가 확인할 수 있는 형식 안전 코드를 생성하는지 파악하려면 해당 컴파일러 설명서를 참조하십시오. 특정 언어 구문을 사용하지 않을 때만 확인할 수 있는 형식 안전 코드를 생성하는 언어 컴파일러를 사용하는 경우, Windows SDK(소프트웨어 개발 키트)PEVerify 도구를 사용하여 코드가 확인할 수 있는 형식 안전 코드인지 파악할 수 있습니다.

확인할 수 있는 형식 안전 코드가 아닌 코드는 보안 정책에서 확인을 생략하도록 허용하는 경우 실행될 수 있습니다. 그러나, 어셈블리를 격리시키기 위한 공용 언어 런타임의 메커니즘에서 형식 안전이 중요한 부분을 차지하므로, 코드가 형식 안전 규칙을 위반하면 보안을 안전하게 적용할 수 없습니다. 기본적으로 형식 안전 코드가 아닌 코드는 로컬 컴퓨터에서 발생한 경우에만 실행될 수 있습니다. 따라서, 이식 가능한 코드는 형식 안전 코드여야 합니다.

참고 항목

개념

코드 액세스 보안 기본 사항

MSIL을 네이티브 코드로 컴파일

참조

PEVerify 도구(Peverify.exe)

기타 리소스

코드 액세스 보안