Share via


System.Xml.Xsl.XslCompiledTransform クラス

この記事では、この API のリファレンス ドキュメントを補足して解説します。

XslCompiledTransform クラスは、XSLT 1.0 構文をサポートする XSLT プロセッサです。 これは新しい実装であり、古い XslTransform クラスと比較するとパフォーマンスが向上します。 XslCompiledTransform クラスの構造は、XslTransform クラスと非常によく似ています。 Load メソッドはスタイル シートを読み込んでコンパイルしますが、Transform メソッドは XSLT 変換を実行します。

XSLT の document() 関数と埋め込みスクリプト ブロックのサポートは既定で無効になっています。 XsltSettings オブジェクトを作成し、それを Load メソッドに渡すことで、これらの機能を有効にします。

詳細については、「XslCompiledTransform クラスの使用」および「XslTransform クラスからの移行」をご覧ください。

セキュリティに関する考慮事項

XslCompiledTransform クラスを使用するアプリケーションを作成するときには、次の項目とその関連事項に注意する必要があります。

  • XSLT スクリプトは既定で無効になっています。 XSLT スクリプトは、スクリプトのサポートが必要であり、完全に信頼された環境で作業している場合のみ有効にします。

  • XSLT document() 関数は既定で無効になっています。 document() 関数を有効にした場合は、XmlSecureResolver オブジェクトを Transform メソッドに渡すことによって、アクセス可能なリソースを制限してください。

  • 拡張オブジェクトは既定で有効になっています。 拡張オブジェクトを含む XsltArgumentList オブジェクトが Transform メソッドに渡されると、拡張オブジェクトは使用されます。

  • XSLT スタイル シートには、他のファイルへの参照や埋め込みのスクリプト ブロックを含めることができます。 悪意のあるユーザーがこれを悪用して、コンピューターがリソース不足に陥るまでシステムに処理を行わせようとするデータやスタイル シートを提供する可能性があります。

  • 混在信頼環境で動作する XSLT アプリケーションは、スタイル シートのなりすましを引き起こす可能性があります。 たとえば、悪意のあるユーザーは、有害なスタイル シートを含むオブジェクトを読み込み、それを Transform メソッドを呼び出して変換を実行する別のユーザーに渡す可能性があります。

これらのセキュリティ上の問題は、スタイル シートが信頼されたソースからのものでない限り、スクリプトや document() 関数を有効にしないこと、および信頼されていないソースからの XslCompiledTransform オブジェクト、XSLT スタイル シート、または XML ソース データを受け入れないことによって軽減できます。