부분 신뢰 코드에서 라이브러리 사용
업데이트: 2010년 7월
참고 |
---|
이 항목은 강력한 이름 어셈블리의 동작에 대해 설명하며, 수준 1 어셈블리에만 작용됩니다..NET Framework 버전 4 이상 버전에 포함된 보안 투명 코드, 수준 2 어셈블리는 강력한 이름의 영향을 받지 않습니다.보안 시스템 변경 사항에 대한 자세한 내용은 .NET Framework 4의 보안 변경 내용을 참조하십시오. |
호스트 또는 샌드박스에서 완전 신뢰 수준보다 낮은 신뢰를 받는 응용 프로그램은 라이브러리 작성자가 AllowPartiallyTrustedCallersAttribute 특성을 사용하여 특별히 허용하지 않는 한 관리되는 공유 라이브러리를 호출할 수 없습니다. 따라서 일부 라이브러리는 부분적으로 신뢰할 수 있는 컨텍스트에서 사용할 수 없다는 점을 응용 프로그램 작성자는 알고 있어야 합니다. 기본적으로 부분 신뢰 샌드박스에서 실행되고 완전 신뢰 어셈블리 목록에 없는 모든 코드는 부분적으로 신뢰할 수 있습니다. 코드가 부분적으로 신뢰할 수 있는 컨텍스트에서 실행되지 않도록 하거나 부분적으로 신뢰할 수 있는 코드에 의해 호출되지 않도록 하려는 경우에는 이 단원의 내용에 대해 신경 쓰지 않아도 됩니다. 그러나 부분적으로 신뢰할 수 있는 코드와 상호 작용해야 하거나 부분적으로 신뢰할 수 있는 컨텍스트에서 실행되어야 하는 코드를 작성할 경우에는 다음 요소를 고려해야 합니다.
라이브러리는 강력한 이름으로 서명되어야만 여러 응용 프로그램에서 공유할 수 있습니다. 강력한 이름을 사용하면 코드를 전역 어셈블리 캐시에 넣거나 샌드박싱 AppDomain의 완전 신뢰 목록에 추가할 수 있으며 소비자는 이식 가능한 특정 코드가 실제로 사용자로부터 온 것임을 확인할 수 있습니다.
기본적으로 강력한 이름의 수준 1 공유 라이브러리는 자동으로 완전 신뢰에 대한 암시적 LinkDemand를 수행하므로 라이브러리 작성자가 별도로 수행해야 하는 작업이 없습니다.
완전히 신뢰할 수 없는 호출자가 이러한 라이브러리를 호출하려고 하면 런타임에서는 SecurityException을 throw하며 호출자는 라이브러리에 링크할 수 없습니다.
자동 LinkDemand를 비활성화하고 예외가 throw되지 않게 하려면 공유 라이브러리의 어셈블리 범위에 AllowPartiallyTrustedCallersAttribute 특성을 포함시키면 됩니다. 이 특성을 사용하면 부분 신뢰되는 관리 코드에서 해당 라이브러리를 호출할 수 있습니다.
이 특성을 사용함으로써 라이브러리에 액세스할 수 있는 권한을 부여받은 부분 신뢰 코드는 여전히 AppDomain에서 정의된 추가 제한 조건을 따라야 합니다.
AllowPartiallyTrustedCallersAttribute 특성이 없는 라이브러리를 부분 신뢰 코드에서 프로그래밍 방식으로 호출할 수는 없습니다.
특정 응용 프로그램 전용인 라이브러리에는 강력한 이름이나 AllowPartiallyTrustedCallersAttribute 특성이 필요하지 않으며 응용 프로그램 외부에서 악성 코드에 의해 참조될 수 없습니다. 개발자가 별도의 작업을 수행하지 않아도 이러한 코드는 이식 가능한 부분 신뢰 코드에서 고의 또는 실수로 악용할 수 없도록 보호됩니다.
다음과 같은 코드 형식의 경우에는 부분 신뢰 코드에서 사용할 수 있도록 명시적으로 설정하는 것이 좋습니다.
보안상 약점에 대해 충분히 테스트되었으며 보안 코딩 지침에 설명된 지침을 따르는 코드
부분적으로 신뢰할 수 있는 경우를 위해 특별히 작성된 강력한 이름의 코드 라이브러리
인터넷에서 다운로드되는 코드에서 호출되며 강력한 이름으로 서명된 모든 구성 요소. 여기에는 부분적으로 신뢰할 수 있는 구성 요소나 완전히 신뢰할 수 있는 구성 요소가 모두 포함됩니다.
참고 |
---|
.NET Framework 클래스 라이브러리의 일부 클래스에는 AllowPartiallyTrustedCallersAttribute 특성이 없으므로 부분 신뢰 코드에서 해당 클래스를 호출할 수 없습니다.부분 신뢰 코드에서 호출할 수 있는 클래스의 목록은 AllowPartiallyTrustedCallersAttribute로 표시된 .NET Framework 어셈블리를 참조하십시오. |
참고 항목
개념
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 7월 |
내용이 일부 업데이트되었습니다. |
콘텐츠 버그 수정 |