Средство защиты жалуется на JsonInjection при десериализации строки json в модель java. Мое приложение использует Джексона для сериализации / десериализации. Я прочитал, что Джексон по умолчанию экранирует вещи и все, и ссылается на вещи типа inte rnet, чтобы решить эту проблему.
Когда я узнал, что есть два варианта решения этой проблемы.
Проверка схемы. В ней говорится, что json необходимо проверять по схеме, а поля ввода необходимо проверять по шаблонам, и т. Д. c, прежде чем произойдет десериализация.
Использовать JsonSanitizer - дезинфицировать строку json для правильного формирования json.
Мы выбрали вариант 2. Поскольку наше приложение не может проверить json по схеме, так как больше чем 200 API в приложении.
JsonSanitizer не помогает нам. Я пишу фрагмент кода, чтобы показать вам, что мы пытались решить эту проблему.
Наше приложение использует этот метод для всех API и не может выполнять проверку схемы.
Есть ли другое решение, чтобы избавиться от проблемы с JsonInjection?
public <T> T jsonToBean(Class<T> cls, String json) {
try {
String sanitizedJson = json;
if (json.trim().startsWith("{") || json.trim().startsWith("[")) {
sanitizedJson = com.google.json.JsonSanitizer.sanitize(json);
}
return objectMapper.readValue(sanitizedJson, cls);
} catch (Exception e) {
logger.error("Deserialization fails");
}
return null;
}```