Я получаю ниже критический риск при сканировании с помощью инструмента Fortify.
Метод getUserLDAPNameFromAD () вызывает динамически генерируемый фильтр LDAP с неподтвержденным вводом, который может позволить злоумышленнику изменить значение оператора.
в классе: ConsoleService
public class ConsoleService implements IConsoleService {
public char[] readPassword() throws IOError {
return System.console().readPassword();
}
and
public final class ConsoleUtils {
public static final String TERMINATION_CHARACTER = ".";
private static Scanner in = new Scanner(System.in);
при использовании в классе LDAPservice.java я получаю ошибку внедрения LDAP.в следующих строках кода:
public Attribute getUserLDAPNameFromAD (атрибут LDAPUserAttribute) выбрасывает NamingException {
String accountName = attribute.constructName(Constants.DOT, true);
EqualsFilter equalsFilter = new EqualsFilter("sAMAccountName", accountName);
String FILTER = "(&(objectClass=user)(objectCategory=person)(" + equalsFilter.toString() + "))";
SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> answer = ctx.search(base, FILTER, ctls);
if (answer.hasMore()) {
SearchResult result = answer.next();
return result.getAttributes().get("distinguishedName");
}
return null;
}
У кого-нибудь есть идеи, как я могу решить эту проблему?