다음을 통해 공유


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

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

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

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

참고 항목

참조

Peverify.exe(PEVerify 도구)

개념

코드 액세스 보안

코드 액세스 보안 기본 사항

관리되는 실행 프로세스