通常,在java中解析XML时,可以通过使用避免成为实体扩展攻击的受害者
dbf.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true);
其中dbf是一个DocumentBuilderFactory,用于创建用于XML解析的DocumentBuilders.
但是,假设我正在使用JAXB解组一些XML,例如:
final JAXBContext context = JAXBContext.newInstance(MyClass.class);
final Unmarshaller unmarshaller = context.createUnmarshaller();
final MyClass result = (MyClass) unmarshaller.unmarshal(input);
Run Code Online (Sandbox Code Playgroud)
如何配置JAXB以在基础XML解析器上使用FEATURE_SECURE_PROCESSING?
谷歌搜索答案提出以下最佳结果:http: //forums.java.net/node/699983
但是,我不想引入XMLStreamFactory等实现,只是为了使实体扩展可配置.有没有办法只使用JAXB API解决这个问题?
bdo*_*han 10
Java SE 5将实体扩展数限制为64,000:
我希望所有JAXB实现都会保留这个默认保护.但是,如果您想100%确定您可以通过以下方式创建SAXSource并让JAXB解组:
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
SAXParser sp = spf.newSAXParser();
XMLReader xmlReader = sp.getXMLReader();
SAXSource saxSource = new SAXSource(xmlReader, inputSource);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅
| 归档时间: |
|
| 查看次数: |
6268 次 |
| 最近记录: |