Saxon による XSLT のフルインタフェースメカニズム
XXE 予防属性
getTransformerFactory は、PTC が提供する一般的で安全な API であり、TransformerFactory のインスタンスを提供します。このインスタンスは XSLT 変換で使用できます。Saxon がクラスパスにある場合、このインスタンスは Saxon によって提供されます。そうでない場合は、JDK 実装が使用されます。これは安全な API であるため、外部 DTD とスタイルシートを親 XSLT ファイルに含めることはできません。XXE 攻撃のリスクを回避するため、Saxon に以下の属性が導入されています。PTC は、これらの属性へのサポートを導入しました。これらの属性は、外部 DTD とスタイルシートへのアクセスを制限します。

final TransformerFactory transformerFactory = (new JAXPFactories()).getTransformerFactory();
transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
前述のコンフィギュレーションにより、DTD またはスタイルシートへの外部参照は機能しません。前述の属性設定によるエラーを回避するため、Saxon にはファイルリゾルバが必要です。PTC は、WTURIResolver を導入しました。getTransformationFactory API を使用するときは、以下のサンプルコードに示すように、所定の親 xsl ファイルの WTURIResolver を設定してください。このコンフィギュレーションにより、WT_HOME にあるインクルードファイルが参照されます。含めるファイルは、WT_HOME の場所に配置されていなければなりません。
tFactoryImpl.setURIResolver(new WTURIResolver(filterFile));
これは役に立ちましたか?