Исключить параметр запроса URL с одинарной кавычкой в ​​Джерси / Джексоне - PullRequest
0 голосов
/ 28 мая 2020

Длинная история, мне нужно защитить некоторый устаревший код от внедрения SQL. Готовые заявления не вариант.

API сначала обрабатываются Джерси, а десериализация объекта JSON - Jackon

Итак, я бы хотел избежать всех вхождений '. Поэтому, когда Джексон / Джерси десериализует параметр запроса из API, каждый раз, когда он видит ', он заменяет его на '' Возможно ли это?

1 Ответ

1 голос
/ 03 июня 2020

Вы пробовали использовать собственный десериализатор строк?

public class CustomStringDeserializer extends StdScalarDeserializer<String> {
    protected CustomStringDeserializer() {
        super(String.class);
    }

    @Override
    public String deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
        String originalValue = parser.getValueAsString();
        String escapedValue = null;
        if (originalValue != null) {
            escapedValue = originalValue.replace("'", "''");
        }
        return escapedValue;
    }
}
...