Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 somut bir XmlResolver uygulamasını çevreler ve temel alınan XmlResolver için erişilebilir kaynakları sınırlar. Ö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, güvenliği belirlemek için XmlResolver tarafından kullanılan URL, kanıt nesnesinin bir örneği veya izin kümesiyle birlikte geçerli bir XmlSecureResolver uygulama sağlarsınız. Ya bir System.Security.PermissionSet oluşturulur ya da mevcut olan kullanılır ve PermissionSet.PermitOnly altındakinin güvenliğini sağlamak için bunun üzerinde XmlResolver çağrılır.
Önemli
XmlSecureResolver nesneleri, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. Nesneleri önbelleğe alırken dikkatli olun ve XmlSecureResolver nesnesini güvenilmeyen bir bileşene geçirmemelisiniz.
Ö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 XmlSecureResolver sınıfını etkiler (yani, CreateEvidenceForUrl(String) yöntemini veya XmlSecureResolver oluşturucusunu kullandığınızda). SQL Server tümleşik CLR'nin ilke çözümleme mekanizması Url veya Zone bilgilerini kullanmaz. Bunun yerine, derlemeler yüklendiğinde sunucunun eklediği GUID'ye göre izinler verir. SQL Server tümleşik CLR'sinde XmlSecureResolver kullandığınızda, belirtilen PermissionSet kullanarak gerekli tüm kanıtları doğrudan sağlayın.
Güvenli çözümleyici kullanmak için
Doğru izin kümesine sahip bir XmlSecureResolver oluşturun.
XmlReaderSettings nesnesini kullanan bir XmlSecureResolver nesne oluşturun.
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;
Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolver
XmlReaderSettings nesnesini, Create nesnesini yaratırken, XmlReader yöntemiyle iletin.
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
Bir WebPermission nesne oluşturun.
WebPermission myWebPermission = new WebPermission(PermissionState.None);
Dim myWebPermission As New WebPermission(PermissionState.None)
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/")
PermissionSet nesnesine web izinlerini ekleyin.
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);
Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)
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.
Erişimi, kanıt kullanarak kısıtlamak için
XmlSecureResolver(XmlResolver, Evidence) oluşturucusunu kullanarak ve Evidence belirterek erişimi kısıtlayabilirsiniz. Evidence, alttaki PermissionSet öğesine uygulanan XmlResolver'i oluşturmak için kullanılır. XmlSecureResolver oluşturulan PermitOnly üzerindeki PermissionSet çağrılarını yapar, herhangi bir kaynağı açmadan önce.
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
olaraknull
ayarlayın. Bu, kaynaklara erişime izin vermez.-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
Doğru izin kümesine sahip bir XmlSecureResolver oluşturun.
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)