Проблема с регистрацией журналов в HP Audit - PullRequest
0 голосов
/ 26 сентября 2019

Есть ли разница между

private final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);

public void myMethod(userId){
    if(true){
        LOGGER.warn("User Id = [{}] is not authorized.", userId);
    }
}

и

private final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
private final String notAuthorized = "User Id = [{}] is not authorized.";

public void myMethod(userId){
    if(true){
        LOGGER.warn(notAuthorized, userId);
    }
}

Как вы можете видеть, я сделал String message как личное окончательное поле.Причина в том, что я использую HP Audit, и он выдает мне предупреждение «Log Forging». Вот как HP Audit дает пример и как его исправить:

Исходный (плохой) пример:

    String val = request.getParameter("val");
    try {
            int value = Integer.parseInt(val);
    }
    catch (NumberFormatException nfe) {
            log.info("Failed to parse val = " + val);
    }

И модифицированный (хороший) пример:

public static final String NFE = "Failed to parse val. The input is required 
   to be an integer value."
    String val = request.getParameter("val");
    try {
            int value = Integer.parseInt(val);
    }
    catch (NumberFormatException nfe) {
            log.info(NFE);
    }

Поэтому на основе этих примеров я изменил свой код, как указано выше.Единственное, что мой код использует параметризованные аргументы (userId).Я не уверен, если это решит проблему здесь.Может ли кто-нибудь помочь мне лучше понять это?Спасибо.

...