gpt4 book ai didi

java - 在 Java 中避免 XPath 注入(inject)攻击的最佳方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:44 25 4
gpt4 key购买 nike

我正在使用 XPath 从 XML 中检索值。由于以下原因,我的代码扫描器破坏了构建:

invokes an XPath query built using unvalidated input. This call could allow an attacker to modify the statement's meaning or to

这是我的代码:

private String myMethod(String XPath, OMElement input) {
String elementText = null;
AXIOMXPath xpathToElement = null;
try {
xpathToElement = new AXIOMXPath(XPath);
xpathToElement.addNamespace(xxx,yyy);
elementText = ((OMElement) xpathToElementnode.selectSingleNode(input)).getText();

} catch (JaxenException e) {
e.printStackTrace();
fail(e.getMessage());
...

这是我调用上述方法的代码:

key = myMethod(myAttribute.getAttributeValue(), input);

input 是包含 XML 的 OMelement。属性是从 XML 属性中获取的。

如何避免 XPathInjection?可以分享一个代码片段吗?

最佳答案

您要从用户输入或其他外部来源获取完整 XPath?

建议:不要将完整的 XPath 表达式作为不安全的来源。使用预编译的 XPath。如果必须根据用户输入参数化 XPath,请将基于用户的部分隔离为仅字符串参数,然后使用 XPath 库的参数化机制。

您正在使用基于 Jaxen 的 Java 和 Axiom,因此请使用 SimpleVariableContextsetVariableContext()用于 XPath 参数化。请参阅查尔斯·达菲的回答 here有关使用 Axiom 时安全地参数化 XPath 的更多详细信息。

关于java - 在 Java 中避免 XPath 注入(inject)攻击的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30363567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com