首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止TrasnformerFactory的XXE加强问题

防止TrasnformerFactory的XXE加强问题
EN

Stack Overflow用户
提问于 2016-02-18 18:49:28
回答 1查看 899关注 0票数 0

我需要解决XXE问题,.I正在使用代码中的转换器工厂。找到下面的修复,但是我在我的code.Reason中看不到ACCESS_EXTERNAL_DTD属性,我得到的是下面的代码,它可以为Java7工作,但是我正在使用Java6 .Can有人请建议一些其他的修复来保护Java TransformerFactory不受XXE的影响,这样做:

代码语言:javascript
复制
TransformerFactory tf = TransformerFactory.newInstance();
tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
EN

回答 1

Stack Overflow用户

发布于 2016-04-12 17:26:14

我也遇到过同样的情况,如果不更新Java版本,很难解决这个问题。

以下是能够通过加强扫描并获得相同结果的代码更改。

不使用TransformerFactory,而使用以下代码:

代码语言:javascript
复制
   DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
   LSSerializer lsSerializer = domImplementation.createLSSerializer();
   LSOutput lsOutput = domImplementation.createLSOutput( );


   lsOutput.setEncoding("UTF-8");
   StringWriter stringWriter=new StringWriter();
   lsOutput.setCharacterStream(stringWriter);
   lsSerializer.write(doc,lsOutput);
   return stringWriter.toString();

作为参考,请查看Is there a more elegant way to convert an XML Document to a String in Java than this code?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35479324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档