Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当安全功能处理设置为true时,无法使用扩展函数_Java_Xml_Xslt_Java Ee 7_Xalan - Fatal编程技术网

Java 当安全功能处理设置为true时,无法使用扩展函数

Java 当安全功能处理设置为true时,无法使用扩展函数,java,xml,xslt,java-ee-7,xalan,Java,Xml,Xslt,Java Ee 7,Xalan,您好,我正在尝试以安全的方式使用XSLT(v1)实现XML转换。我正在使用Wildfly 10和Oracle JDK 8(1.8.0_151)开发JavaEE7环境。为了根据我的需要定制xml的表示,我使用了一个xsl样式表,它引用了我创建的一个方法。问题是,当我将security feature设置为TRUE时,会出现以下异常: javax.xml.transform.TransformerException与消息: 使用扩展函数'xalan://com.mycompany.mypkg.eas

您好,我正在尝试以安全的方式使用XSLT(v1)实现XML转换。我正在使用Wildfly 10和Oracle JDK 8(1.8.0_151)开发JavaEE7环境。为了根据我的需要定制xml的表示,我使用了一个xsl样式表,它引用了我创建的一个方法。问题是,当我将security feature设置为TRUE时,会出现以下异常: javax.xml.transform.TransformerException与消息: 使用扩展函数'xalan://com.mycompany.mypkg.easyprint.helpers.MyClass:myMethod当安全处理功能设置为true时,不允许使用“” 从我读到的其他文章中,有一个功能需要在TransformerFactory上配置,所以我设置了它

TransformerFactory tf=TransformerFactory.newInstance();
setFeature(xmlstants.FEATURE\u SECURE\u PROCESSING,true);
tf.setFeature(“http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions“,对)

但是,当我运行应用程序时,会出现以下异常: javax.xml.transform.TransformerConfiguration异常:无法在此TransformerFactory上设置功能“”


有什么建议吗?

如果您足够信任样式表,允许调用外部Java函数,那么您就足够信任它,不需要设置安全处理功能


但是,如果您别无选择,只能设置SECURE_处理特性,那么可以使用Saxon选项,该选项允许样式表调用通过处理器API预先注册的Java扩展。这允许样式表只调用应用程序明确授权的那些扩展。这是使用s9api调用来完成的。registerExtensionFunction()
和Java扩展必须写入这个Saxon接口。

我想设置这个特性不仅仅是禁止外部方法。它还应该调整配置。但问题是我们的代码审查工具(Sonarqube)在这方面引发了一个安全漏洞,所以我需要找到一个解决方法。我正在考虑使用不同的实现。也许我不知道Saxon可悲的是,安全处理功能被广泛误解了。任何人如果认为你设置了它就安全了,如果你不设置它就不安全了,这两方面都是完全错误的。也许是这样。但我认为我们会超出范围。我真正需要的是一个impl,它将给我一个“安全”的选项,但允许使用预定义的定制java方法。你知道什么工具可以做这项工作吗?你所要求的没有意义。执行调用外部Java方法的样式表是不安全的。谢谢MK,这似乎是一个可行的解决方案,我现在正在尝试。实际上,我对名称空间有一个问题。我想转换的XML文件属于自定义名称空间,在运行时我不应该知道。因此,解决方案应该是名称空间无关的。是否有任何配置选项可以实现这一点,或者Saxon对此有严格要求?