[英]What is the best way to avoid XPath Injection attack in Java?
我正在使用 XPath 從 XML 檢索值。 由於以下原因,我的代碼掃描器破壞了構建:
調用使用未經驗證的輸入構建的 XPath 查詢。 此調用可能允許攻擊者修改語句的含義或
這是我的代碼:
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 庫的參數化機制。
您正在使用 Java 和基於 Jaxen 的 Axiom,因此使用SimpleVariableContext和setVariableContext()進行 XPath 參數化。 見查爾斯·達菲的答案在這里使用公理時,詳細了解安全參數化的XPath。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.