다음을 통해 공유


System.Xml.XmlSecureResolver 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

XmlUrlResolver 클래스는 네임스페이스의 모든 클래스에 System.Xml 대한 기본 확인자입니다. XML 문서를 로드하고 엔터티, DTD 또는 스키마와 같은 외부 리소스를 확인하고 지시문을 가져오거나 포함하는 데 사용됩니다.

사용할 개체를 지정하여 이 기본값을 재정의 XmlResolver 할 수 있습니다. 예를 들어 기본에서 액세스할 수 있는 리소스를 XmlResolver 제한하려는 경우 개체를 XmlSecureResolver 사용할 수 있습니다.

XmlSecureResolver 는 기본에서 액세스할 수 있는 리소스의 XmlResolver 구체적인 구현을 래핑하고 XmlResolver 제한합니다. 예를 들어 포함된 XmlSecureResolver URI(Uniform Resource Identifier) 참조에서 발생하는 상호 기본 리디렉션을 금지하는 기능이 있습니다.

개체를 XmlSecureResolver 생성할 때 URL, 증명 정보 개체의 인스턴스 또는 보안 확인에 사용되는 사용 권한 집합과 함께 유효한 XmlResolver 구현을 XmlSecureResolver 제공합니다. A가 System.Security.PermissionSet 생성되거나 기존 항목이 사용되며 PermissionSet.PermitOnly 기본 보안에 도움이 되도록 호출됩니다 XmlResolver.

Important

XmlSecureResolver 개체에는 사용자 자격 증명과 같은 중요한 정보가 포함될 수 있습니다. 개체를 캐싱할 XmlSecureResolver 때는 주의해야 하며 신뢰할 수 없는 구성 요소에 개체를 전달 XmlSecureResolver 해서는 안 됩니다.

Important

.NET CLR(공용 언어 런타임)에서 실행되는 코드와 Microsoft SQL Server 2005 내에 통합된 CLR에서 실행되는 코드에 대한 보안 인프라에는 차이가 있습니다. 이로 인해 .NET CLR용으로 개발된 코드가 SQL Server 통합 CLR에서 사용될 때 다르게 작동하는 경우가 발생할 수 있습니다. 이러한 차이점 중 하나는 URL(즉, 메서드 또는 생성자를 사용하는 경우)을 기반으로 하는 증거가 있는 경우 클래스에 CreateEvidenceForUrl(String)XmlSecureResolver 영향을 XmlSecureResolver 줍니다. SQL Server 통합 CLR의 정책 확인 메커니즘은 해당 또는 Zone 정보를 사용하지 Url 않습니다. 대신 어셈블리가 로드될 때 서버가 추가하는 GUID에 따라 사용 권한을 부여합니다. SQL Server 통합 CLR에서 사용하는 XmlSecureResolver 경우 지정된 PermissionSet값을 사용하여 필요한 증거를 직접 제공합니다.

보안 확인자를 사용하려면

  1. 올바른 권한 집합을 XmlSecureResolver 사용하여 만듭니다.

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

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. 개체 CreateXmlReaderSettings 만들 때 메서드에 개체를 전달합니다XmlReader.

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

URL을 사용하여 액세스를 제한하려면

XmlSecureResolver(XmlResolver, String) 생성자를 사용하여 로컬 인 XmlSecureResolver 트라넷 사이트에만 액세스할 수 있는 개체를 만듭니다.

XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")

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

  1. WebPermission 개체를 만듭니다.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. 액세스를 허용하려는 URL을 지정합니다.

    myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/");
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/");
    
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/")
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
    
  3. 개체에 웹 권한을 추가합니다 PermissionSet .

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. XmlSecureResolver(XmlResolver, PermissionSet) 생성자를 사용하여 사용 권한 집합을 XmlSecureResolver 사용하여 개체를 만듭니다.

    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
    
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
    

    다른 예제는 XmlSecureResolver 참조 페이지를 참조하세요.

증거를 사용하여 액세스를 제한하려면

생성자를 사용하고 XmlSecureResolver(XmlResolver, Evidence) 를 지정하여 액세스를 제한할 수 있습니다 Evidence. 기본 Evidence 에 적용되는 XmlResolver것을 만드는 PermissionSet 데 사용됩니다. XmlSecureResolver 리소스를 열기 전에 만든 PermissionSet 호출 PermitOnly 입니다.

다음은 몇 가지 일반적인 시나리오와 각각에 대해 제공할 증거의 유형입니다.

  • 완전히 신뢰할 수 있는 환경에서 작업하는 경우 어셈블리를 사용하여 증거를 만듭니다.

    Evidence myEvidence = this.GetType().Assembly.Evidence;
    XmlSecureResolver myResolver;
    myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence
    Dim myResolver As XmlSecureResolver
    myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 반 신뢰할 수 있는 환경에서 작업하는 경우 외부 원본에서 오는 코드 또는 데이터가 있고 외부 원본의 출처를 알고 있으며 확인 가능한 URI가 있는 경우 URI를 사용하여 증거를 만듭니다.

    
    Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI)
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 반 신뢰할 수 있는 환경에서 작업 중이고 외부 원본에서 오는 코드 또는 데이터가 있지만 외부 원본의 출처를 모르는 경우 다음 중 하나를 수행합니다.

    evidence 매개 변수를 null로 설정합니다. 이렇게 하면 리소스에 액세스할 수 없습니다.

    또는

    애플리케이션에서 리소스에 액세스해야 할 경우 호출자에게 증명 정보를 요청합니다.

보안 확인자를 사용하여 XSLT 스타일시트를 로드하려면

  1. 올바른 권한 집합을 XmlSecureResolver 사용하여 만듭니다.

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

    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load("http://serverName/data/xsl/sort.xsl", null, myResolver);
    
    Dim xslt As New XslCompiledTransform()
    xslt.Load("http://serverName/data/xsl/sort.xsl", Nothing, myResolver)