Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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 XPath.compile()的使用容易受到XPath注入的攻击_Java_Xml_Sonarqube - Fatal编程技术网

Java XPath.compile()的使用容易受到XPath注入的攻击

Java XPath.compile()的使用容易受到XPath注入的攻击,java,xml,sonarqube,Java,Xml,Sonarqube,Sonar在使用XPath.compile进行静态代码分析时提出了一个关键问题 已使用common-langs.StringUtils.escapeXml验证输入字符串 但声纳仍然显示了同样的情况 XPathExpression nodePathExpression = xpath.compile(nodeName); 除了列出输入字符串,还有什么办法可以解决声纳问题吗?声纳问题本身指出了一些有趣的参考资料,似乎是最有帮助的 使用参数化XPath查询(例如使用XQuery)。这将有助于确保数据

Sonar在使用XPath.compile进行静态代码分析时提出了一个关键问题

已使用common-langs.StringUtils.escapeXml验证输入字符串

但声纳仍然显示了同样的情况

XPathExpression nodePathExpression = xpath.compile(nodeName);

除了列出输入字符串,还有什么办法可以解决声纳问题吗?

声纳问题本身指出了一些有趣的参考资料,似乎是最有帮助的


使用参数化XPath查询(例如使用XQuery)。这将有助于确保数据平面和控制平面之间的分离

正确验证用户输入。适当时拒绝数据,适当时过滤,适当时转义。确保XPath查询中使用的输入在该上下文中是安全的


我猜第二个选项无法解决sonarqube问题,因为sonarqube没有检测到您之前验证了输入。

将问题标记为假阳性:)“使用参数化XPath查询(例如使用XQuery)。这将有助于确保数据平面和控制平面之间的分离”。它是否说明了预编译的xpath表达式,甚至XPathExpression filterCriteriaPathExpression=xpath.compile(filterCriteria);最终布尔标准匹配=(布尔)filterCriteriaPathExpression.evaluate(节点,XPathConstants.boolean);如果(!criteriaMatched){..Sonar仍然报告问题,即使使用Xpath查询也是如此