Aracılığıyla paylaş


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, msxsl:script uzantı öğesi kullanılarak stil sayfasına gömülebilir.

Uzantı Nesneleri

Uzantı nesneleri AddExtensionObject yöntemi kullanılarak 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 AddExtensionObject yöntemini çağırmaya çalışmak, bir güvenlik istisnası atılmasına neden olur.

Stil Sayfası Betikleri

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

Uyarı

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

Yönergeler

Betik çalıştırmayı 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ına null değeriyle geçin.

Dış Kaynaklar

XSLT dili, işlemcinin URI başvurularını çözümlemesi gereken xsl:import, xsl:include veya document() işlevi gibi ö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:

  • Stil sayfası derlenirken, XmlResolverxsl:import ve xsl:include çözünürlüğü için kullanılır.

  • Dönüştürme gerçekleştirildiğinde XmlResolver, document() işlevini çözümlemek için kullanılır.

    Uyarı

    document() işlevi, XslCompiledTransform sınıfında varsayılan olarak devre dışıdır. Bu özellik, XsltSettings.EnableDocumentFunction özelliği true olarak ayarlanarak ve XsltSettings nesnesi Load yöntemine geçirilerek etkinleştirilebilir.

Load ve Transform yöntemlerinin her biri, argümanlarından biri olarak bir XmlResolver'yi kabul ettiği 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şilmediğinden emin olmak istiyorsanız, null bağımsız değişkeni için XmlResolver belirtebilirsiniz.

Ayrıca bakınız