방법: XmlSecureResolver 클래스 사용
업데이트: November 2007
XmlSecureResolver 클래스를 사용하면 XmlResolver 개체를 래핑하고 원본으로 사용하는 XmlResolver가 액세스하는 리소스를 제한하여 다른 XmlResolver 개체를 보호할 수 있습니다. 예를 들어, XmlSecureResolver 클래스는 특정 인터넷 사이트 또는 영역에 액세스하지 못하도록 할 수 있습니다.
URL을 사용하여 액세스를 제한하려면
로컬 인트라넷 사이트에만 액세스할 수 있는 XmlSecureResolver 개체를 만듭니다.
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
권한 집합을 사용하여 액세스를 제한하려면
WebPermission 개체를 만듭니다.
Dim myWebPermission As New WebPermission(PermissionState.None)
WebPermission myWebPermission = new WebPermission(PermissionState.None);
다음 두 URL에만 액세스를 허용합니다.
myWebPermission.AddPermission(NetworkAccess.Connect, "https://www.contoso.com/") myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
myWebPermission.AddPermission(NetworkAccess.Connect,"https://www.contoso.com/"); myWebPermission.AddPermission(NetworkAccess.Connect,"http://litwareinc.com/data/");
PermissionSet 개체에 웹 권한을 추가합니다.
Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);
권한 집합을 사용하여 XmlSecureResolver 개체를 만듭니다.
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
증명 정보를 사용하여 액세스를 제한하려면
Evidence를 사용하여 액세스를 제한할 수 있습니다. Evidence를 사용하면 기본 XmlResolver에 적용되는 PermissionSet을 만들 수 있습니다. XmlSecureResolver는 리소스를 열기 전에 생성된 PermissionSet에서 PermitOnly를 호출합니다.
다음 목록에서는 가능한 몇 가지 시나리오 및 각 시나리오에 제공되는 증명 정보 형식을 요약해서 설명합니다.
완전히 신뢰할 수 있는 환경에서 작업하고 있습니다.
어셈블리를 사용하여 증명 정보를 만듭니다.
Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence Dim myResolver As XmlSecureResolver myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = this.GetType().Assembly.Evidence; XmlSecureResolver myResolver; myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
부분 신뢰 환경에서 작업하고 있으며 외부 소스에서 가져온 코드나 데이터가 있습니다. 외부 소스의 출처를 알고 있고 확인 가능한 URI가 있습니다.
URI를 사용하여 증명 정보를 만듭니다.
Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI) Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI); XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
부분 신뢰 환경에서 작업하고 있으며 외부 소스에서 가져온 코드나 데이터가 있으나 이 외부 소스의 출처를 모릅니다.
evidence 매개 변수를 null로 설정합니다. 그러면 리소스에 액세스할 수 없습니다.
-또는-
응용 프로그램에서 리소스에 액세스해야 할 경우 호출자에게 증명 정보를 요청합니다.
XmlSecureResolver를 사용하여 XML 리소스 확인
XmlUrlResolver 클래스는 System.Xml 네임스페이스의 모든 클래스에 대한 기본 해결 프로그램입니다. 이 클래스를 사용하여 XML 문서를 로드하고 엔터티, DTD 또는 스키마와 같은 외부 리소스를 확인하며, 지시문을 가져오거나 포함할 수 있습니다.
사용할 XmlResolver 개체를 지정하고 재정의할 수 있습니다. XmlSecureResolver를 지정하면 기본 XmlResolver가 액세스할 수 있는 리소스를 제한할 수 있습니다.
XmlSecureResolver를 사용하는 XmlReader 개체를 만들려면
올바른 권한 집합으로 XmlSecureResolver를 만듭니다.
XmlSecureResolver 개체를 사용하는 XmlReaderSettings 개체를 만듭니다.
Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolver
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;
XmlReaderSettings 개체를 사용하여 XmlReader 개체를 만듭니다.
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReader reader = XmlReader.Create("books.xml", settings);
XmlSecureResolver를 사용하여 XSLT 스타일시트를 로드하려면
올바른 권한 집합으로 XmlSecureResolver를 만듭니다.
XmlSecureResolver를 Load 메서드에 전달합니다.
Dim xslt As New XslCompiledTransform() xslt.Load("https://serverName/data/xsl/sort.xsl", Nothing, myResolver)
XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("https://serverName/data/xsl/sort.xsl", null, myResolver);