Bagikan melalui


Kelas System.Xml.XmlSecureResolver

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Kelas XmlUrlResolver adalah resolver default untuk semua kelas di System.Xml namespace. Ini digunakan untuk memuat dokumen XML dan untuk menyelesaikan sumber daya eksternal seperti entitas, DTD atau skema, dan mengimpor atau menyertakan arahan.

Anda dapat mengambil alih default ini dengan menentukan objek yang XmlResolver akan digunakan. Misalnya, jika Anda ingin membatasi sumber daya yang dapat diakses oleh yang mendasar XmlResolver , Anda dapat menggunakan XmlSecureResolver objek.

XmlSecureResolver membungkus implementasi XmlResolver konkret dan membatasi sumber daya yang dapat diakses oleh yang mendasarnya XmlResolver . Misalnya, XmlSecureResolver memiliki kemampuan untuk melarang pengalihan lintas domain, yang terjadi dari referensi Pengidentifikasi Sumber Daya Seragam (URI) yang disematkan.

Saat membuat XmlSecureResolver objek, Anda memberikan implementasi yang valid XmlResolver bersama dengan URL, instans objek bukti, atau set izin, yang digunakan oleh XmlSecureResolver untuk menentukan keamanan. System.Security.PermissionSet Baik yang dihasilkan atau yang sudah ada digunakan dan PermissionSet.PermitOnly dipanggil di atasnya untuk membantu mengamankan yang mendasar XmlResolver.

Penting

XmlSecureResolver objek dapat berisi informasi sensitif seperti kredensial pengguna. Berhati-hatilah saat penembolokan XmlSecureResolver objek dan tidak boleh meneruskan XmlSecureResolver objek ke komponen yang tidak tepercaya.

Penting

Ada perbedaan dalam infrastruktur keamanan untuk kode yang berjalan pada runtime bahasa umum .NET (CLR) dan untuk kode yang berjalan pada CLR yang terintegrasi dalam Microsoft SQL Server 2005. Ini dapat menyebabkan kasus di mana kode yang dikembangkan untuk .NET CLR beroperasi secara berbeda ketika digunakan pada CLR terintegrasi SQL Server. Salah satu perbedaan ini memengaruhi XmlSecureResolver kelas ketika Anda memiliki bukti yang didasarkan pada URL (yaitu, ketika Anda menggunakan CreateEvidenceForUrl(String) metode atau XmlSecureResolver konstruktor). Mekanisme resolusi kebijakan dari CLR terintegrasi SQL Server tidak menggunakan Url informasi atau Zone . Sebaliknya, ia memberikan izin berdasarkan GUID yang ditambahkan server saat rakitan dimuat. Ketika Anda menggunakan XmlSecureResolver di CLR terintegrasi SQL Server, berikan bukti yang diperlukan secara langsung dengan menggunakan PermissionSet.

Untuk menggunakan resolver aman

  1. Buat dengan set izin yang XmlSecureResolver benar.

  2. Buat XmlReaderSettings objek yang menggunakan XmlSecureResolver objek .

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. Teruskan XmlReaderSettings objek ke Create metode saat Anda membuat XmlReader objek.

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

Untuk membatasi akses dengan menggunakan URL

XmlSecureResolver(XmlResolver, String) Gunakan konstruktor untuk membuat XmlSecureResolver objek yang diizinkan untuk mengakses situs intranet lokal Anda saja.

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

Untuk membatasi akses dengan menggunakan set izin

  1. Buat objek WebPermission.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Tentukan URL yang ingin Anda izinkan aksesnya.

    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. Tambahkan izin web ke PermissionSet objek.

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. XmlSecureResolver(XmlResolver, PermissionSet) Gunakan konstruktor untuk membuat XmlSecureResolver objek dengan menggunakan set izin.

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

    XmlSecureResolver Lihat halaman referensi untuk contoh lain.

Untuk membatasi akses dengan menggunakan bukti

Anda dapat membatasi akses dengan menggunakan XmlSecureResolver(XmlResolver, Evidence) konstruktor dan menentukan Evidence. Evidence digunakan untuk membuat PermissionSet yang diterapkan ke yang mendasar XmlResolver. XmlSecureResolver Panggilan PermitOnly pada yang dibuat PermissionSet sebelum membuka sumber daya apa pun.

Berikut adalah beberapa skenario umum dan jenis bukti yang harus disediakan untuk masing-masing:

  • Jika Anda bekerja di lingkungan yang sepenuhnya tepercaya, gunakan perakitan Anda untuk membuat bukti:

    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)
    
  • Jika Anda bekerja di lingkungan semi-tepercaya, Anda memiliki kode atau data yang berasal dari sumber luar, dan Anda tahu asal sumber luar dan memiliki URI yang dapat diverifikasi, gunakan URI untuk membuat bukti:

    
    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)
    
  • Jika Anda bekerja di lingkungan semi-tepercaya dan Anda memiliki kode atau data yang berasal dari sumber luar, tetapi Anda tidak tahu asal sumber luar, baik:

    Set evidence parameter ke null. Ini memungkinkan tidak ada akses ke sumber daya.

    -atau-

    Jika aplikasi Anda memerlukan beberapa akses ke sumber daya, minta bukti dari pemanggil.

Untuk menggunakan resolver aman untuk memuat lembar gaya XSLT

  1. Buat dengan set izin yang XmlSecureResolver benar.

  2. Teruskan XmlSecureResolver ke Load metode .

    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)