说来话长,我需要保护一些遗留代码,防止SQL注入。预备语句不是一个选项。
API都是先由Jersey处理,JSON对象反序列化是Jackon。
所以,我想做的一件事是逃避所有出现的 '
. 因此,当杰克逊球衣从API反序列化查询参数时,无论何时,它都会看到一个。'
它将用一个 ''
这可能吗?
你有没有试过使用自定义字符串反序列器?
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;
}
}