XSLTを使用してXMLデータをフォーマットしてXHTMLとして表示するアプリケーションがあります。
システムは任意のXMLスキーマに対応できるため、システムのユーザーはスキーマとXSLTをアップロードする必要があります。明らかに、これは管理者レベルのユーザーにのみ許可されているタスクですが、狙うのもかなり大きな目玉なので、より安全にしようとしています。
Saxon9.0Bを使用していることに言及する必要があります
ユーザー提供のXSLTをサニタイズする標準的な方法はありますか?これまでのところ、考えられる3つの問題を特定しましたが、私が単に考えていなかった問題がさらにある可能性があることを認識しています。
xsl:importおよびdocument()関数は、サーバーファイルシステムで取得できます。これは、カスタムURIリゾルバーを使用してロックダウンするのは非常に簡単なので、これをカバーしていると確信しています。
出力にはjavascriptを含めることができます。OWASP Anti-Samyのようなものを使用して、許可された出力タグをホワイトリストに登録することを考えています。
XSLTはJava関数を呼び出すことができます。これは現在私に頭痛を引き起こしているものです。私たちはそれを使用しているので、機能を完全にオフにしたくありません(現時点ではそれを行う方法さえわかりませんが)。私の好ましい解決策は、既知の安全な関数のみを実行できるように、受け入れ可能なJava名前空間をロックダウンできるようにすることです。しかし、私は他の提案を受け入れています。
ゴールドスタンダードは、すべての既知のXSLTベースの脆弱性を処理するだけの標準ライブラリですが、上記の問題(特に3つ)に取り組むための提案がない場合は、非常に評価されます。
前もって感謝します