我正在進行LDAP調用,在該調用中,我需要使用由用戶輸入到LDAP過濾器中的字符串。我通過從字符串中刪除所有非字母數字字符來清理數據。Trick /解決方法HP Fortify LDAP注入查找
public static String alphanumericOnly(String input) {
return input == null ? "" : input.replaceAll("\\W|_", "");
}
然而,HP Fortify的標記交換作爲LDAP注入漏洞,即使我已經做了我的盡職調查,以確保不存在任何LDAP元字符使得LDAP注入攻擊可以執行。
我正在尋找誘騙HP Fortify的方法,以便它不會標記此交互。
我注意到在HP Fortify的其他用途中,如果我的字符串輸入是一個整數,我可以將它解析爲一個int(本例中爲BigInteger),然後我可以在字符串中使用它,HP Fortify將忽略它日誌鍛造檢查時:
BigInteger id = new BigInteger(ValueChecker.numericOnly(request.getID()));
logger.info(id + " - Request Received.");
在我看來,有可能是類似的方式來欺騙HP Fortify的到忽略LDAP注入問題,因爲我已經驗證了數據。
簡單的解決方法我試過沒有工作:
字符串轉換爲字符數組,然後再返回到一個String
將每個字符轉換爲字節數組,然後轉換回一個String
鑄造的String Object,然後回字符串
我並不想隱藏或壓制Fortify的發現。我想欺騙/解決方法Fortify,以便他們根本沒有被標記。
任何想法?
這聽起來更像是一個Fortify中的錯誤,畢竟你還是脆弱的。爲什麼不修復漏洞? – AviD