Share via


XSLT Güvenlik Konuları

XSLT dili, size çok fazla güç ve esneklik sağlayan zengin bir özellik kümesine sahiptir. Kullanışlı olsa da dış kaynaklar tarafından da yararlanabilecek birçok özellik içerir. XSLT'yi güvenli bir şekilde kullanmak için, XSLT kullanırken ortaya çıkan güvenlik sorunlarının türlerini ve bu riskleri azaltmak için kullanabileceğiniz temel stratejileri anlamanız gerekir.

XSLT Uzantıları

İki popüler XSLT uzantısı stil sayfası betiği ve uzantı nesneleridir. Bu uzantılar XSLT işlemcisinin kod yürütmesine olanak sağlar.

  • Uzantı nesneleri, XSL dönüşümlerine programlama özellikleri ekler.

  • Betikler, uzantı öğesi kullanılarak msxsl:script stil sayfasına eklenebilir.

Uzantı Nesneleri

Uzantı nesneleri yöntemi kullanılarak AddExtensionObject eklenir. Uzantı nesnelerini desteklemek için FullTrust izin kümesi gereklidir. Bu, uzantı nesne kodu yürütürken izinlerin yükseltilmesinin gerçekleşmemesini sağlar. FullTrust izinleri olmadan yöntemini çağırmaya AddExtensionObject çalışmak, bir güvenlik özel durumu oluşturmayla sonuçlanıyor.

Stil Sayfası Betikleri

Betikler, uzantı öğesi kullanılarak msxsl:script bir stil sayfasına eklenebilir. Betik desteği, sınıfta varsayılan olarak devre dışı bırakılan isteğe bağlı bir özelliktir XslCompiledTransform . Betik oluşturma özelliği true olarak ayarlanarak XsltSettings.EnableScript ve nesnesi yöntemine Load geçirilerek XsltSettings etkinleştirilebilir.

Not

Betik blokları yalnızca .NET Framework'te desteklenir. .NET Core veya .NET 5 veya üzeri sürümlerde desteklenmez.

Yönergeler

Betik oluşturmayı yalnızca stil sayfası güvenilir bir kaynaktan geldiğinde etkinleştirin. Stil sayfasının kaynağını doğrulayamıyorsanız veya stil sayfası güvenilir bir kaynaktan gelmiyorsa, XSLT ayarları bağımsız değişkenine geçin null .

Dış Kaynaklar

XSLT dili, işlemcinin URI başvurularını çözümlemesi document() gereken , xsl:includeveya işlevi gibi xsl:importözelliklere sahiptir. sınıfı XmlResolver dış kaynakları çözümlemek için kullanılır. Dış kaynakların aşağıdaki iki durumda çözülmesi gerekebilir:

ve Transform yöntemlerinin Load her biri, bağımsız değişkenlerinden biri olarak kabul XmlResolver eden aşırı yüklemeler içerir. XmlResolver belirtilmezse, kimlik bilgisi olmayan bir varsayılan XmlUrlResolver kullanılır.

Yönergeler

İşlevi document() yalnızca stil sayfası güvenilir bir kaynaktan geldiğinde etkinleştirin.

Aşağıdaki listede bir XmlResolver nesne belirtmek isteyebileceğiniz zamanlar açıklanmaktadır:

  • XSLT işleminin kimlik doğrulaması gerektiren bir ağ kaynağına erişmesi gerekiyorsa, gerekli kimlik bilgileriyle bir XmlResolver kullanabilirsiniz.

  • XSLT işleminin erişebileceği kaynakları kısıtlamak istiyorsanız, doğru izin kümesine sahip bir XmlSecureResolver kullanabilirsiniz. XmlSecureResolver Denetlemediğiniz veya güvenilmeyen bir kaynağı açmanız gerekiyorsa sınıfını kullanın.

  • Davranışı özelleştirmek istiyorsanız, kendi XmlResolver sınıfınızı uygulayabilir ve kaynakları çözümlemek için kullanabilirsiniz.

  • Dış kaynaklara erişildiğinden emin olmak istiyorsanız, bağımsız değişken için XmlResolver belirtebilirsiniznull.

Ayrıca bkz.