gpt4 book ai didi

java - 如何在保持安全性的同时提供 XSLT 实用程序

转载 作者:行者123 更新时间:2023-11-30 06:22:46 24 4
gpt4 key购买 nike

我希望能够提供可在 XSL 样式表中使用的转义实用程序。例如:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:escape="xalan://com.example.myservice.MyEscapeTool">

但是,就 Java 而言,我的理解是 TransformerFactory 上缺少以下设置可能是不安全的:

factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

所以我这样做了,但是可以理解的是,这会阻止您使用“外部函数调用”并出现以下运行时错误:

FATAL: XPath syntax error at char 12 in {escape:new()}:
Cannot find a matching 0-argument function named
{java:com.example.myservice.MyEscapeTool}new(). Note: external
function calls have been disabled;

删除上述 FEATURE_SECURE_PROCESSING 标志将解决该问题。

如何包含可在 XSLT 中调用的实用函数,同时不会导致安全性损失并能够公开任何任意 Java 类?

最佳答案

正如 @MartinHonnen 在他的评论中指出的那样,如果您切换到使用 Saxon,那么您可以限制样式表仅使用在执行之前向 XSLT 处理器注册的“集成扩展函数”,而不允许样式表调用恰好位于类路径上的任何类/方法。

关于java - 如何在保持安全性的同时提供 XSLT 实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com