java - 如何使用 xsd 限制 xml 文件中的 ENTITY 标记

标签 java xml security xsd xom

我的 xml 代码如下:

  <request><param name=\"client-id\" value=\"organization\"/><param name=\"client-org-id\" value=\"3042d80e24cd4cc31eb9ef48e7012\"/><param name=\"user-agent\" value=\"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0\"/><param name=\"client-browser\" value=\"Firefox 48\"/><param name=\"domain-id\" value=\"layout\"/><param name=\"view-id\" value=\"1\"/><param name=\"view-token\" value=\"layout|get-workspace|\"/><param name=\"view-action\" value=\"private.layout:get-workspace\"/><param name=\"view-parent-id\" value=\"\"/><param name=\"view-parent-token\" value=\"\"/><param name=\"view-parent-action\" value=\"\"/></request>

在这里,我将上面的 xml 作为字符串获取,并使用 XOM 解析器来解析 xml。现在我的问题是我的应用程序经过了安全扫描,并且我获取 XML 字符串的参数正在注入(inject)外部 XML,如下所示:

<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE acunetix [><!ENTITY acunetixent SYSTEM \"http://hitrlWBrzWDQ0.bxss.me/\">]><xxx>&acunetixent;</xxx>

所以我想阻止外部实体。对我来说最好的解决方案是什么。或者使用 xsd 解析 XML 时避免 xml 中的 ENTITY 标记的任何解决方案。提前致谢。

最佳答案

我担心你不能在 XOM 中做到这一点

http://www.xom.nu/infoset.xhtml ,您可以阅读

All entity references are expanded. XOM does not allow unexpanded entity references.

关于java - 如何使用 xsd 限制 xml 文件中的 ENTITY 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39612244/

相关文章:

mysql - 为唯一用户提供多密码的数据库设计

java - 为什么当我想使用变量类时需要初始化它

java - 两个接口(interface)具有相同的方法名称但返回类型不同

java - JButton 保持在中心的位置

javascript - 如何防止cookie被窃取以及在其他浏览器和系统上使用

linux - 如何从源代码升级 CentOS 6.5/Linux/Unix 中的 OpenSSL?

java 。 TreeSet 后继者

html - 这个网址存在吗? RCurl 说不

java - 如何在单元测试中模拟缺乏网络连接

c# - 如何使用 C# 读取和编辑 XML 文件?