샌드 박스 처리 된 app-domain에 예외 문제가 있습니다. 샌드 박스에서 실행되는 코드는 보안이 투명합니다. 부분적으로 신뢰할 수있는 발신자를 허용하고 sanboxed 코드에 기능을 제공하는 유틸리티 dll이 있습니다. 그 메소드는 SecuritySafeCritical입니다. 예외가 발생할 때까지 모든 것이 잘 작동합니다.샌드 박스 AppDomain 교차 어셈블리 예외 처리
샌드 박스에서 실행되는 코드는 try-catch 블록에 의해 보호되므로 티를 throw하면 응용 프로그램이 다운되지 않습니다.
보안 trasparent dll의 코드에서 예외가 발생하면 모두 정상입니다. 샌드 박스 코드가 신뢰할 수있는 유틸리티 DLL의 메소드를 호출하고, 그 코드가 발생하는 경우에는, 다음과 같은 상황이 발생합니다 내가 디버거 디버거 나누기에 나는 경우
이:
An exception of type 'Blah' occurred in Trusted.dll but was not handled in user code
그 자체로 어느입니다 OK,하지만 예외가 내 시도-catch 블록에 의해 체포되어 형 'ㅋ'이 아닌,하지만은 다음과 같습니다
[System.Security.SecurityException] = {"Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed."}
내 생각은 그 부분 신뢰에 대한 신뢰할 수있는 어셈블리에서 예외이 "누출" 코드는 보안 문제입니다. 두 번째 추측은 부분적으로 신뢰할 수있는 코드가 예외를 잡아서 보안 문제를 일으킬 수 있으므로 전파가 차단되므로이 문제가 문제로 간주된다는 것입니다. 프레임 워크가 실제로 위의 예외를 발생시키는 "SecurityPermission"을 어설 션하려고 시도 할 때 분명하지 않습니다.
내 질문 :이 사건을 어떻게 처리해야합니까? "깔끔한"방법으로 작동하도록하는 방법이 있습니까? (그렇다면 신뢰할 수있는 부분 코드에서부터 모든 부분으로 예외가 이동하는 예외적 인 경우), 그렇다면 안전한 방법으로 어떻게해야합니까? (분명히 나는 맹목적으로 되돌릴 필요없이 사용 권한을 주장하고 싶지 않습니다!)
나는 신뢰할 수있는 도우미에 예외를 기록하고, 던져 버리고, 보안 예외를 잡아 원래의 예외를 다시 던져 버립니다. 그러나 나는 그것들을 구부리기보다는 "규칙들"을 따르는 더 깨끗한 해결책이 있는지 궁금해하고있었습니다.
또한 교차 어셈블리 예외 처리에 대한 내 추측이 맞다면!