我的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字符串的参数是注入外部XML,如下所示:
<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE acunetix [><!ENTITY acunetixent SYSTEM \"http://hitrlWBrzWDQ0.bxss.me/\">]><xxx>&acunetixent;</xxx>
所以我想阻止外部实体。什么是最好的解决方案。或者在使用xsd解析XML时避免使用xml中的ENTITY标记的任何解决方案。提前谢谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
首先,您在 不 XML中发布的内容。您必须删除双引号字符\
之前的所有反斜杠"
字符,以便您发布的内容格式正确。
所以我想阻止外部实体。
如果这意味着您想要阻止外部实体被注入您的XML,那么我们可能无法帮助您,因为我们和您都无法控制注入它的安全扫描
如果这意味着您要阻止实体引用被扩展,请认识到XML解析器假设以扩展实体引用,并且通常无法覆盖此行为。 @innovimax(+1)已经证明XOM没有。当高级已知实体引用时,请参阅here了解XSLT中的hack。
最后请注意,在您的请求的任何一种解释中,XSD都不起作用。