2009년 1월 6일 화요일

Exception : 'System.Security.SecurityException' 2

http://msdn.microsoft.com/ko-kr/library/8skskf63.aspx

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

댓글 1개:

sunnyblogs :

SecurityPermission 문제
Project Name' > Properties > Security > Enable ClickOnce Security Setting , This is a full trust application 으로 선택해서 해결한다.