Share via


System.Xml.XmlSecureResolver sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

XmlUrlResolver sınıfı, ad alanı içindeki System.Xml tüm sınıflar için varsayılan çözümleyicidir. XML belgelerini yüklemek ve varlıklar, DTD'ler veya şemalar gibi dış kaynakları çözümlemek ve yönergeleri içeri aktarmak veya dahil etmek için kullanılır.

Kullanılacak nesneyi belirterek bu varsayılanı XmlResolver geçersiz kılabilirsiniz. Örneğin, temel alınanın XmlResolver erişebileceği kaynakları kısıtlamak istiyorsanız, bir XmlSecureResolver nesnesi kullanabilirsiniz.

XmlSecureResolver uygulamasının somut bir uygulamasını XmlResolver çevreler ve temel alınan XmlResolver kaynakların erişimine sahip olan kaynakları kısıtlar. Örneğin, XmlSecureResolver katıştırılmış Tekdüzen Kaynak Tanımlayıcısı (URI) başvurusundan oluşan etki alanları arası yeniden yönlendirmeyi yasaklayabilme özelliğine sahiptir.

Bir XmlSecureResolver nesne oluşturduğunuzda, url, kanıt nesnesinin örneği veya güvenlik belirlemek için tarafından XmlSecureResolver kullanılan izin kümesiyle birlikte geçerli XmlResolver bir uygulama sağlarsınız. bir System.Security.PermissionSet oluşturulur veya var olan kullanılır ve PermissionSet.PermitOnly temel alınan öğesinin güvenliğini sağlamaya yardımcı olmak için bu dosyada çağrılır XmlResolver.

Önemli

XmlSecureResolver nesneleri, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. Nesneleri önbelleğe alırken XmlSecureResolver dikkatli olun ve nesneyi güvenilmeyen bir bileşene geçirmemelidir XmlSecureResolver .

Önemli

.NET ortak dil çalışma zamanı (CLR) üzerinde çalışan kod ve Microsoft SQL Server 2005 ile tümleşik CLR üzerinde çalışan kod için güvenlik altyapısında farklılıklar vardır. Bu, .NET CLR için geliştirilen kodun SQL Server tümleşik CLR'de kullanıldığında farklı çalıştığı durumlara yol açabilir. Bu farklardan biri, URL'yi temel alan kanıtınız olduğunda sınıfı etkiler XmlSecureResolver (yani, yöntemini veya oluşturucuyu CreateEvidenceForUrl(String)XmlSecureResolver kullandığınızda). SQL Server tümleşik CLR'nin ilke çözümleme mekanizması veya Zone bilgilerini kullanmazUrl. Bunun yerine, derlemeler yüklendiğinde sunucunun eklediği GUID'ye göre izinler verir. SQL Server tümleşik CLR'sinde öğesini kullandığınızda XmlSecureResolver , belirtilen PermissionSetbir kullanarak gerekli tüm kanıtları doğrudan sağlayın.

Güvenli çözümleyici kullanmak için

  1. Doğru izin kümesine sahip bir XmlSecureResolver oluşturun.

  2. nesnesini kullanan XmlSecureResolver bir XmlReaderSettings nesne oluşturun.

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. XmlReaderSettings nesneyi Create oluştururken nesnesini yöntemine geçirinXmlReader.

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

URL kullanarak erişimi kısıtlamak için

Oluşturucuyu XmlSecureResolver(XmlResolver, String) kullanarak yalnızca yerel intranet sitenize erişmesine izin verilen bir XmlSecureResolver nesne oluşturun.

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

İzin kümesi kullanarak erişimi kısıtlamak için

  1. Bir WebPermission nesne oluşturun.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Erişime izin vermek istediğiniz URL'leri belirtin.

    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. Nesneye web izinlerini PermissionSet ekleyin.

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. XmlSecureResolver(XmlResolver, PermissionSet) İzin kümesini kullanarak nesne XmlSecureResolver oluşturmak için oluşturucuyu kullanın.

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

    XmlSecureResolver Başka bir örnek için başvuru sayfasına bakın.

Kanıt kullanarak erişimi kısıtlamak için

Oluşturucuyu XmlSecureResolver(XmlResolver, Evidence) kullanarak ve belirterek Evidenceerişimi kısıtlayabilirsiniz. Evidence, temel alınan XmlResolveröğesine uygulanan öğesini oluşturmak PermissionSet için kullanılır. Herhangi XmlSecureResolver bir kaynağı açmadan önce oluşturulan PermissionSet üzerindeki çağrılarPermitOnly.

Bazı yaygın senaryolar ve her biri için sağlayabilecek kanıt türleri şunlardır:

  • Tam olarak güvenilen bir ortamda çalışıyorsanız, kanıtı oluşturmak için derlemenizi kullanın:

    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)
    
  • Yarı güvenilir bir ortamda çalışıyorsanız, dış kaynaktan gelen kodunuz veya verileriniz varsa ve dış kaynağın kaynağını biliyorsanız ve doğrulanabilir bir URI'niz varsa, kanıtı oluşturmak için URI'yi kullanın:

    
    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)
    
  • Yarı güvenilir bir ortamda çalışıyorsanız ve dış kaynaktan gelen kodunuz veya verileriniz varsa ancak dış kaynağın kaynağını da bilmiyorsanız:

    parametresini evidence olarak nullayarlayın. Bu, kaynaklara erişime izin verir.

    -veya-

    Uygulamanız kaynaklara erişim gerektiriyorsa, arayandan kanıt isteyin.

XSLT stil sayfasını yüklemek için güvenli çözümleyiciyi kullanmak için

  1. Doğru izin kümesine sahip bir XmlSecureResolver oluşturun.

  2. XmlSecureResolver yöntemine Load geçirin.

    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)