Pertimbangan Keamanan XSLT

Bahasa XSLT memiliki serangkaian fitur yang kaya yang memberi Anda banyak kekuatan dan fleksibilitas. Ini termasuk banyak fitur yang, sementara berguna, juga dapat dieksploitasi oleh sumber luar. Untuk menggunakan XSLT dengan aman, Anda harus memahami jenis masalah keamanan yang muncul saat menggunakan XSLT, dan strategi dasar yang dapat Anda gunakan untuk mengurangi risiko ini.

Ekstensi XSLT

Dua ekstensi XSLT populer adalah skrip lembar gaya dan objek ekstensi. Ekstensi ini memungkinkan prosesor XSLT untuk menjalankan kode.

  • Objek ekstensi menambahkan kemampuan pemrograman ke transformasi XSL.

  • Skrip dapat disematkan dalam lembar gaya menggunakan msxsl:script elemen ekstensi.

Objek Ekstensi

Objek ekstensi ditambahkan menggunakan AddExtensionObject metode . Set izin FullTrust diperlukan untuk mendukung objek ekstensi. Ini memastikan bahwa peningkatan izin tidak terjadi ketika kode objek ekstensi dijalankan. Mencoba memanggil metode AddExtensionObject tanpa izin FullTrust mengakibatkan terjadinya pengecualian keamanan.

Skrip Lembar Gaya

Skrip dapat disematkan dalam lembar gaya menggunakan msxsl:script elemen ekstensi. Dukungan skrip adalah fitur opsional pada kelas XslCompiledTransform yang dinonaktifkan secara default. Pembuatan skrip dapat diaktifkan dengan mengatur XsltSettings.EnableScript properti ke true dan meneruskan objek XsltSettings ke metode Load.

Nota

Blok skrip hanya didukung di .NET Framework. Mereka tidak didukung pada .NET Core atau .NET 5 atau versi yang lebih baru.

Panduan

Aktifkan pembuatan skrip hanya saat lembar gaya berasal dari sumber tepercaya. Jika Anda tidak dapat memverifikasi sumber lembar gaya, atau jika lembar gaya tidak berasal dari sumber tepercaya, teruskan null untuk argumen pengaturan XSLT.

Sumber Daya Eksternal

Bahasa XSLT memiliki fitur seperti xsl:import, , xsl:includeatau document() fungsi , di mana prosesor perlu menyelesaikan referensi URI. Kelas XmlResolver ini digunakan untuk menyelesaikan sumber daya eksternal. Sumber daya eksternal mungkin perlu diselesaikan dalam dua kasus berikut:

Metode Load dan Transform masing-masing mencakup kelebihan beban yang menerima XmlResolver sebagai salah satu argumennya. Jika XmlResolver tidak ditentukan, default XmlUrlResolver tanpa kredensial akan digunakan.

Panduan

Aktifkan document() fungsi hanya ketika lembar gaya berasal dari sumber tepercaya.

Daftar berikut ini menjelaskan kapan Anda mungkin ingin menentukan XmlResolver objek:

  • Jika proses XSLT perlu mengakses sumber daya jaringan yang memerlukan autentikasi, Anda dapat menggunakan sebuah XmlResolver dengan kredensial yang diperlukan.

  • Jika Anda ingin membatasi sumber daya yang dapat diakses proses XSLT, Anda dapat menggunakan XmlSecureResolver dengan set izin yang benar. XmlSecureResolver Gunakan kelas jika Anda perlu membuka sumber daya yang tidak Anda kontrol, atau yang tidak tepercaya.

  • Jika ingin menyesuaikan perilaku, Anda dapat mengimplementasikan kelas Anda sendiri XmlResolver dan menggunakannya untuk menyelesaikan sumber daya.

  • Jika Anda ingin memastikan bahwa tidak ada sumber daya eksternal yang diakses, Anda dapat menentukan null untuk argumen tersebut XmlResolver .

Lihat juga