Я делаю вызов LDAP, в котором мне нужно использовать строку, введенную пользователем в фильтр LDAP. Я очистил данные, удалив из строки все не буквенно-цифровые символы.Trick/Обходное решение HP Fortify LDAP Injection Finding
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, так как я уже проверил достоверность данных.
простые обходные пути я пытался не работал:
преобразование строки в массив символов, а затем обратно в строку
ввода каждого символа в массив байтов, а затем преобразование обратно в строку
литья строку в объект, а затем обратно в строку
Я не собираюсь скрывать или подавлять выводы Fortify. Я хочу обмануть/усовершенствовать Fortify, чтобы они не были отмечены вообще.
Любые идеи?
Это звучит скорее как ошибка в Fortify, и вы все еще уязвимы. Почему бы просто не устранить эту уязвимость? – AviD