다음을 통해 공유


방법: 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/");
    

권한 집합을 사용하여 액세스를 제한하려면

  1. WebPermission 개체를 만듭니다.

    Dim myWebPermission As New WebPermission(PermissionState.None)
    
    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
  2. 다음 두 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/");
    
  3. PermissionSet 개체에 웹 권한을 추가합니다.

    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
  4. 권한 집합을 사용하여 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 개체를 만들려면

  1. 올바른 권한 집합으로 XmlSecureResolver를 만듭니다.

  2. XmlSecureResolver 개체를 사용하는 XmlReaderSettings 개체를 만듭니다.

    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
  3. XmlReaderSettings 개체를 사용하여 XmlReader 개체를 만듭니다.

    Dim reader As XmlReader = XmlReader.Create("books.xml", settings)   
    
    XmlReader reader = XmlReader.Create("books.xml", settings);
    

XmlSecureResolver를 사용하여 XSLT 스타일시트를 로드하려면

  1. 올바른 권한 집합으로 XmlSecureResolver를 만듭니다.

  2. XmlSecureResolverLoad 메서드에 전달합니다.

    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);
    

참고 항목

기타 리소스

보안 및 System.Xml 응용 프로그램

XML 문서 및 데이터