Il existe une méthode Spring globale @ExceptionHandler(Exception.class)
qui enregistre une exception comme celle-ci:
@ExceptionHandler(Exception.class)
void handleException(Exception ex) {
logger.error("Simple error message", ex);
...
L'analyse de Veracode indique que cette journalisation a Improper Output Neutralization for Logs
et suggérer d'utiliser l'enregistreur ESAPI. Existe-t-il un moyen de corriger cette vulnérabilité sans changer l'enregistreur en ESAPI? C'est le seul endroit dans le code où j'ai rencontré ce problème et j'essaie de comprendre comment le résoudre avec des modifications minimales. Peut-être que ESAPI a des méthodes que je n'ai pas remarquées?
P.S. L'enregistreur actuel est Log4j sur slf4j
PD: Au final, j'ai utilisé l'enregistreur ESAPI. Je pensais qu'il n'utiliserait pas mon service de journalisation par défaut, mais je me trompais et il a simplement utilisé mon interface de journalisation slf4j avec une configuration appropriée.
private static final Logger logger = ESAPI.getLogger(MyClass.class);
...
logger.error(null, "Simple error message", ex);
ESAPI a l'extension de l'enregistreur log4j et de l'usine d'enregistreurs. Il peut être configuré ce qu'il faut utiliser dans ESAPI.properties. Par exemple:
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
Bien que je sois un peu en retard, mais je pense que cela aiderait ceux qui ne veulent pas utiliser la bibliothèque ESAPI et qui rencontrent des problèmes uniquement pour la classe de gestionnaire d'exceptions
Utiliser la bibliothèque Apache commons
import org.Apache.commons.lang3.exception.ExceptionUtils;
LOG.error(ExceptionUtils.getStackTrace(ex));