在使用XPath.compile的静态代码分析期间,Sonar提出了一个关键问题
使用common-langs.StringUtils.escapeXml来验证输入字符串
但是声纳仍然显示相同的
XPathExpression nodePathExpression = xpath.compile(nodeName);
除了将输入字符串列入白名单之外,有没有办法解决声纳问题?
答案 0 :(得分:1)
sonarqube问题本身指出了一些有趣的参考文献,this one似乎是最有用的参考文献。
使用参数化的XPath查询(例如使用XQuery)。这有助于确保数据平面和控制平面之间的分离。
或
正确验证用户输入。在适当的时候拒绝数据,在适当的地方过滤并在适当的时候逃避确保将在XPath查询中使用的输入在该上下文中是安全的。
我猜第二个选项不会解决sonarqube问题,因为sonarqube没有检测到你之前验证了输入。